itmedia / data-transformer
DataTransformer
v0.2.1
2017-02-03 13:53 UTC
Requires
- php: ^5.6 || ^7.0
Requires (Dev)
- phpunit/phpunit: ^5.2
This package is auto-updated.
Last update: 2024-09-13 02:03:46 UTC
README
这是一个用于将数据转换为数组的库,基于预定义的模式(Transformer)。
安装
composer require itmedia/data-transformer
使用示例
转换器
转换器必须继承自 Itmedia\DataTransformer\Transformer\Transformer 并实现 map($resource) 方法
可以构建转换映射,可以是数组也可以是对象。
class UserTransformer extends Transformer { public function map($resource) { return [ 'name' => $resource['user_name'], 'email' => $resource['user_email'] ]; } } class GroupTransformer extends Transformer { public function map($resource) { return [ 'id' => $resource['group_id'], 'name' => $resource['group_name'] ]; } }
数据转换
$resource = [ 'user_name' => 'Tester', 'user_email' => 'email@email.com', 'password' => 'mypass', 'user_group' => [ [ 'group_id' => 1, 'group_name' => 'User' ], [ 'group_id' => 2, 'group_name' => 'Manager' ] ] ]; $transformer = new UserTransformer(); $transformer->addCollection(new GroupTransformer('user_group', ['field' => 'groups'])); $transformProvider = new TransformProvider(); $result = $transformProvider->transformItem($resource, $transformer);
结果
[
'name' => 'Tester',
'email' => 'email@email.com',
'groups' => [
[
'id' => 1,
'name' => 'User'
],
[
'id' => 2,
'name' => 'Manager'
]
]
]
选项和转换选项
转换器可以包含其他转换器。
$transformer = new UserTransformer();
$transformer->add(new UserTransformer()); // Обработка одного элемента
$transformer->addCollection(new GroupTransformer($property, $mapping, $options)); // Обработка коллекции элементов
其中
-
$property- 用于选择转换值的属性。可以是数组的键,也可以是对象的名称方法(默认: null) -
$mapping- 映射选项(拼接成输出数组)。
可用的映射选项
-
field- 转换结果将分配到的数组键名称(默认: null)- string - 键名称;
- null - 自动计算。如果是集合,则值为 $property,否则与根数组连接;
- false - 与根数组连接。
-
required- 检查 $property 数据的存在(抛出异常)(默认: false)。 -
$options- 转换选项。可用于管理数据转换,例如隐藏某些字段。在 Transformer::defaultOptions() 中描述了可用的转换选项。示例 -Itmedia\DataTransformer\Tests\Stub\Transformer\ArrayGroupTransformer
数据转换
$options = [ 'root_key' => 'data' ]; $transformProvider = new TransformProvider($options);
选项
root_key- 将返回的数组包装在 root_key 键中。 (默认: null)
转换单个元素
$transformProvider->transformItem($resource, $transformer);
转换元素集合
$transformProvider->transformCollection($resource, $transformer);