itmedia / data-transformer
DataTransformer
Installs: 157
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/itmedia/data-transformer
Requires
- php: ^5.6 || ^7.0
Requires (Dev)
- phpunit/phpunit: ^5.2
This package is auto-updated.
Last update: 2025-10-13 04:05:22 UTC
README
Библиотека для трансформации данных в массивы, на основании предопределенной схемы (Transformer).
Install
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- Свойство, по которому будет происходить выборка значения для последующей трансформации. Может быть как ключем массива, так и названием метода объекта (default: null)
- 
$mapping- Опции маппинга (склеивания в выходной массив).
Доступные опции маппинга:
- 
fieldНазвание ключа массива, на который будет присвоен результат трансформации (default: null):- string - название ключа;
- null - автоматически вычислить. Если коллекция, то значение $property иначе объединиться с корневым масивом;
- false - объединение с корневым масивом.
 
- 
required- Проверить существования данных по $property (выкидывается исключение) (default: false).
- 
$options- Опции трансформации. Может использоваться для управления преобразования данных, например для скрытия каких-либо полей. Описываются доступные опции трансформации в Transformer::defaultOptions(). Пример -Itmedia\DataTransformer\Tests\Stub\Transformer\ArrayGroupTransformer
Трансформация данных:
$options = [ 'root_key' => 'data' ]; $transformProvider = new TransformProvider($options);
Опции:
- root_key- Обернуть возвращаемый массив в ключ root_key. (default: null)
Трансформация одного элемента:
$transformProvider->transformItem($resource, $transformer);
Трансформация коллекции элементов:
$transformProvider->transformCollection($resource, $transformer);