bluepsyduck / common
在其他项目中常用的一些类。
1.0.1
2018-06-17 07:35 UTC
Requires
- php: >=7.0.0
Requires (Dev)
- phpunit/phpunit: ^6.0 || ^7.0
- squizlabs/php_codesniffer: ^3.3
This package is auto-updated.
Last update: 2024-09-05 05:10:51 UTC
README
这个库包含了一些在其他项目中常用的一些类。
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(): 调用指定的方法并返回其结果值。