Недавно узнал о паттерне DTO, до этого в приложении мои методы возвращали массивы - и это был ад их рефакторить. Теперь понял, что этот паттерн сильно упростит разработку.
Посмотрел несколько примеров, как работают с этим паттерном, я честно говоря, мнения очень разные, а именно:
Одни говорят, что Data Transfer Object не должен иметь никаких методов, должны быть только свойства.
Другие, добавляют в эти объекты геттеры, чтобы вызывать свои свойства через них.
Также, видел варианты, когда создают какой-то один абстрактный класс для DTO в котором реализуют функционал инициализации свойств через конструктор (в конструктор принимается массив ключ => знач), и соответствующим свойствам выставляются значения.
Не совсем понял, как правильно должно это быть.. Можно ли делать геттеры (они же никакую логику не задают) ? Как быть с инициализацией данных ? И какие есть варианты аниверсальной инициализации через родительский класс 0 если так можно ?
Простая инициализация DTO мне больше нужна чем геттеры, т.к. очень хочется писать так:
return new myDTO(["key" => "val"]);
или еще как-нибудь если есть варианты ? Чтобы не писать так:
$dto = new myDTO();
$dto->param1 = $value1;
...
Буду благодарен за развернутый ответ!