Data Transfer Object: как инициализировать и должны ли быть геттеры?

74
03 июня 2021, 00:30

Недавно узнал о паттерне DTO, до этого в приложении мои методы возвращали массивы - и это был ад их рефакторить. Теперь понял, что этот паттерн сильно упростит разработку.

Посмотрел несколько примеров, как работают с этим паттерном, я честно говоря, мнения очень разные, а именно:

Одни говорят, что Data Transfer Object не должен иметь никаких методов, должны быть только свойства. Другие, добавляют в эти объекты геттеры, чтобы вызывать свои свойства через них. Также, видел варианты, когда создают какой-то один абстрактный класс для DTO в котором реализуют функционал инициализации свойств через конструктор (в конструктор принимается массив ключ => знач), и соответствующим свойствам выставляются значения.

Не совсем понял, как правильно должно это быть.. Можно ли делать геттеры (они же никакую логику не задают) ? Как быть с инициализацией данных ? И какие есть варианты аниверсальной инициализации через родительский класс 0 если так можно ?

Простая инициализация DTO мне больше нужна чем геттеры, т.к. очень хочется писать так:

return new myDTO(["key" => "val"]); 

или еще как-нибудь если есть варианты ? Чтобы не писать так:

$dto = new myDTO();
$dto->param1 = $value1;
...

Буду благодарен за развернутый ответ!

READ ALSO
Как правильно массово загрузить файлы в форме?

Как правильно массово загрузить файлы в форме?

Всем приветНужно загружать 3 файла в форме, они хранятся в отдельной таблице

106
Как в java получить все числа месяца?

Как в java получить все числа месяца?

Всем доброго времени суток! Например, у меня на входе есть String date = "052018" (май 2018)

276
Проблема SSL Android

Проблема SSL Android

У меня есть проблемаЯ настроил на сервере ларавел на порту 8080

106