bluepsyduck/common

在其他项目中常用的一些类。

1.0.1 2018-06-17 07:35 UTC

This package is auto-updated.

Last update: 2024-09-05 05:10:51 UTC


README

Latest Stable Version Total Downloads License Build Status codecov

这个库包含了一些在其他项目中常用的一些类。

DataBuilder

数据构建器是一个类,帮助构建具有不同值的数组,并确保值具有正确的类型。所有方法都可以指定一个默认值,该值应被忽略并添加到数据数组中。

数据构建器提供了一些方法来自动转换设置值

  • setBoolean(): 设置布尔值。
  • setInteger(): 设置整数。
  • setFloat(): 设置浮点数。
  • setString(): 设置字符串值。
  • setDateTime(): 在指定格式中设置日期和时间值。如果传入的值不是 DateTime 实例,则值将自动忽略。
  • setArray(): 设置值数组,可选地具有映射方法,例如转换每个值。
示例
<?php
use BluePsyduck\Common\Data\DataBuilder;

$dataBuilder = new DataBuilder();

// Set some values
$dataBuilder->setInteger('foo', 42)
            ->setString('bar', 'baz');

// Set a variable value unless it is a specific one
$age1 = 21;
$age2 = -1;
$dataBuilder->setInteger('age1', $age1, -1)
            ->setInteger('age2', $age2, -1); // $age2 will get ignored.

// Set a date and time value
$date = new DateTime('2038-01-19 03:14:07');
$dataBuilder->setDateTime('creationTime', $date, 'Y-m-d'); // Will set '2038-01-17' as value.

// Set an array of strings
$dataBuilder->setArray('data', ['foo', 'bar', 42], 'strval'); // Casts all array values to a string.

DataContainer

数据容器包装了一个深度数组,能够访问和映射数组元素,无需检查任何级别键是否存在。所有方法都提供默认值,当键未定义时回退到该默认值。

数据容器提供了一些方法来自动映射数据

  • getBoolean(): 读取布尔值。
  • getInteger(): 读取整数。
  • getFloat(): 读取浮点数。
  • getString(): 读取字符串值。
  • getDateTime(): 读取日期和时间值。整数值将解释为 Unix 时间戳,字符串值将解释为日期字符串。
  • getArray(): 读取数组值。
  • getObject(): 读取值并返回一个新的 DataContainer 实例。
  • getObjectArray(): 读取数组值并将每个项转换为一个新的 DataContainer 实例。
示例
<?php
use BluePsyduck\Common\Data\DataContainer;

$data = [
    'foo' => 'bar',
    'first' => [
        'second' => 42
    ]
];
$dataContainer = new DataContainer($data);

// Accessing the first level
echo $dataContainer->getString('foo'); // 'bar'

// Accessing the second level
echo $dataContainer->getObject('first')->getInteger('second'); // 42
echo $dataContainer->getInteger(['first', 'second']); // 42

// Default values for undefined keys
echo $dataContainer->getFloat('missing', 13.37); // 13.37 

ReflectionTrait

该特性提供了一些方法,以便轻松访问类中的非公共属性和调用用于测试的非公共方法。

  • injectProperty(): 将值注入指定的属性。
  • extractProperty(): 提取指定属性的值。
  • invokeMethod(): 调用指定的方法并返回其结果值。