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