Search
Write a publication
Pull to refresh
0
0
Send message

Еще вам в копилку, посмотреть, как у них устроено: https://packagist.org/packages/justinrainbow/json-schema
или такое: https://github.com/cweiske/jsonmapper
или такое: https://packagist.org/packages/mathielen/import-engine

Вам пожалуйста и тоже спасибо, что потрудились выложить интересную работу.


Но не всегда такие линейные переливания из пустого в порожнее.

И, кстати, если переливания не линейные, т.е. нужно что-то преобразовать во время переливания массива в DTO, то, скорее всего, на эти преобразования нужно сделать отдельный объект (класс), чтобы соблюсти Single Responsibility Principle — data transformer.


Вы посмотрите повнимательней DTO-пакет, может быть там можно через dependency injection впрыснуть свой кастомный data transformer. Или пакет форкнуть и доработать под себя.


Если нет, я бы все равно порекомендовал подумать, как вынести трансформацию в отдельный объект и проводить ее до переливания из массива в DTO (или после?).


Суть такого рефакторинга — сделать так, чтобы интеллектуальный DTO занимался только проверкой типов и, естественно, переносом данных в себе (он же data transfer object по основному назначению).


Кстати, еще по вашей задаче:


  • PHP 7.4 Typed properties — уже день, как вышел, скоро на всех виртуальных хостингах будет, а на VPS вы сами можете поставить.
  • PHP Static Analysis Tool очень полезная штука сама по себе.

Ну у топикстартера основная цель — автоматизация type checking. В этом пакете я ее не увидел.

Коллега правильно показывает направление.
Посмотрите https://github.com/spatie/data-transfer-object — конвертация массивов в DTO со строго типированными properties. Совмещенные с коллекциями https://github.com/tightenco/collect — получите готовый не-велосипед.

Information

Rating
Does not participate
Registered
Activity