Download the PHP package alexpts/php-hydrator without Composer
On this page you can find all versions of the php package alexpts/php-hydrator. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package php-hydrator
php-hydrator
Одни и те же данные нужно представить в разном виде. В коде удобно работать с высокоуровневыми моделями. Но для сохранения этих данных в базу данных, как правило, данные требуется перевести в более простой вид, обычно в ассоциативный массив. Для передачи данных между приложениями используют простые DTO сущности.
Компонент позволяет легко конвертировать ваши данные в ассоциативный массив из модели и обратно заполнять вашу модель данными.
Extractor
Задача класса Extractor извлечь из вашей модели данные согласно указанынм правилам.
Правила извлечения данных описываются в виде ассоциативного массива, где ключ массива это имя ключа в DTO сущности. Наприимер поле модели name можно замапить в поле с именем login в DTO сущности таким образом.
Извлечение через prop позволяет извлеч из модели поле с любой областью видимости (public/protect/private). Если значение prop не указано явно, то оно равно имени ключа DTO сущности. В следующем примере это будет значение name.
Помимо извлечения данных свойств из модели, данные можно получить через вызов метода модели (getter).
Геттер имеит более высокий приоритет, чем свойтво prop.
Hydrator
Класс Hydrator позволяет наполнить модель данными.
Правила гидрации точно такие же как и у extractor сущности.
HydratorService
Класс HydratorService является совмещает в себе Hydrator и Extractor. Также он требует правил в виде сущности Rules, которая сглаживает правил и позволяет описывать их более лаконично
Больше возможностей
Если требуется рекурсивная гидрация/извлечение зависимостей, требуется декларативно объявлять правила трансформации, вызывать pipe функции для фильтрации значения, то стоит воспользоваться надсткойкой над этой билбиотекой - https://github.com/alexpts/php-data-transformer2