Главная
Видео
Примеры кода
Полезное в Linux
Контакты
Помощь проекту

Готовим фабрику по производство DTO

Начнем с того, зачем козе баян!
Допустим у нас есть вот такой код, он максимально абстрагирован для понятие проблемы. Проблема в том что такой ассоциативный массив контролировать в разных слоях приложения сложно.
Массивы это не плохо, но как любой элемент языка его нужно использовать в нужных местах.
Если метод будет приватным, то массив будет уместным, а вот лишняя абстракция только усложнит код.
Но если нужно данные передавать между слоями приложением, то лучши использовать паттерт DTO (Data Transfer Object)
Есть несколько библиотек которые сразу могут помочь реализовать, например spatie/data-transfer-object
Хочу подметить тот факт что библиотека не плоха, но это не DTO в чистом виде.
DTO гласит о том что объект должен нести только данные без всякой логике.
В таком объекте не должно быть методов по превращению данных в другой вид и тд, вообще не должно быть методов которые что то с этими данными делают.

В идеале объект DTO выглядит так

Понятно что нам сразу нужно что-то что поможет легко создавать такие DTO.
Для этого можно использовать паттерн Фабрика.
Она может выглядеть так: Таким образом мы легко можем создать себе объект DTO.
Или если вы счастливый человек и переехали на PHP 8.0, то для вас код еще красивее.
Switch drawer (click me)
© 2026 OpenWeb