Как правило, DTO может помочь вам отделить проблемы данных базы данных от проблем данных объектов, которые используют данные.Вы можете поместить проверку в DTO, чтобы убедиться, что конкретный член соответствует определенному формату.Таким образом, этот дополнительный код не загромождает объекты, которым все равно, что нужно базе данных.
Кроме того, DTO становятся мощными при косвенном обращении к базе данных.Однако это имеет гораздо большее значение в языках, которые могут автоматически генерировать DTO.
В этом и заключается самый мощный и неотразимый аспект DTO.Это может быть легко сгенерировано автоматически.Это также верно в PHP, однако для этого требуются дополнительные инструменты.
Я понимаю, почему вы можете захотеть использовать их в PHP, однако я должен признать, что пока сам не вижу причины для этого.Обычно Factory + Object достаточно для большинства приложений.
HOWEVER
В приложении, в котором есть объекты, которые не отражают базу данных напрямую, DTO снова получает полномочия.Например: приложение, в котором есть люди, состоящие из большого количества метаинформации, такой как адреса, личные данные и кредитные карты, может использовать DTO для всех отдельных данных, а затем использовать объект Person для обработки всего использования этих данных.Таким образом, транзакция может быть передана по кредитной карте DTO напрямую, без суеты и суеты.Затем он может получить доступ к любым данным с карты.Однако, как только вы захотите поместить адрес в DTO для кредитной карты, у вас больше не будет строгого DTO.