Новая версия гидратора DTO для PHP

Сегодня вышел релиз версии 2.0 пакета ClassTransformer.

Эта библиотека позволяет легко преобразовать любой набор данных в нужный вам объект. Вам не нужно менять структуру классов, наследовать их от внешних модулей и т.д. Никаких танцев с бубном — просто данные и нужный класс.

Базовое использование:

Базовое использование ClassTransformer

Что изменилось в 2.0

1. Alias

Добавлена поддержка алиасов для свойств. Это может быть полезно, когда данные приходят из разных источников.

Поддержка alias для свойств

2. Mutator для setter

Если поле требует дополнительной обработки при инициализации, можно сделать mutator — метод set{Attribute}Attribute в вашем классе, где {Attribute} — имя свойства в camelCase.

Mutator для setter

3. afterTransform

Иногда нужно выполнить пост-проверку консистентности данных или просто вывести лог. Метод afterTransform будет вызван после преобразования объекта.

Метод afterTransform

4. Поддержка enum из PHP 8.1+

Поддержка enum из PHP 8.1+

5. transformCollection

Добавлен метод transformCollection для корректного преобразования коллекций.

Метод transformCollection

6. Рефакторинг кода

Рефакторинг позволил получить значительное ускорение.

Ускорение после рефакторинга

Сравнение

Также был проведён анализ текущих аналогичных решений. К сожалению, некоторые пакеты заставляют разработчика наследовать классы от своих интерфейсов, чего мне бы очень не хотелось. Некоторые диктуют свою структуру классов, что также влечёт за собой изменения в уже сложившейся структуре. Также есть много решений, реализованных под конкретный фреймворк, и нет возможности нормально переиспользовать их в другом стеке.

Ниже — сравнение скорости с ближайшими конкурентами моего пакета.

Сравнение скорости с конкурентами

Исходники моего сравнения опубликованы на github:

https://github.com/yzen-dev/php-dto-transform-benchmark