Size: a a a

2020 May 20

AT

Andre Teros in PHP
В дто данные о разных вещах. Плюс доп данные нужны только одному.
источник

B

BIV in PHP
Andre Teros
Есть несколько классов для преобразования данных реализующих один интерфейс.
В интерфейсе метод
execute(array $data, DTO1 $dto1)
.
Одному из классов понадобилась еще информация с DTO2, другим она не нужна.
Как лучше поступить в данной ситуации? Пока что делаю
setDto2
перед
execute
.
Может сделать интерфейс DTO и использовать его в методе execute? Тогда не будешь зависеть от реализации.
источник

AT

Andre Teros in PHP
BIV
Может сделать интерфейс DTO и использовать его в методе execute? Тогда не будешь зависеть от реализации.
мне нужно не  DTO2 вместо DTO1, а они оба
источник

BT

Bohdan Turchyk in PHP
Andre Teros
мне нужно не  DTO2 вместо DTO1, а они оба
nullable параметр
источник

Р

Руслан in PHP
Andre Teros
мне нужно не  DTO2 вместо DTO1, а они оба
В смысле "оба"? Ты же передаешь только один
источник

BT

Bohdan Turchyk in PHP
ну или да, композицию пили
источник

BT

Bohdan Turchyk in PHP
приблизительно равные по отстойности варианты
источник

AT

Andre Teros in PHP
Bohdan Turchyk
nullable параметр
думал о таком, но тоже показалось не очень
источник

AT

Andre Teros in PHP
Руслан
В смысле "оба"? Ты же передаешь только один
передаю один дто1, но в однох случае мне надо и дто2, пока что просто делаю сетДто2 перед самим вызовом
источник

M

Maxim Kainov in PHP
Andre Teros
думал о таком, но тоже показалось не очень
Это лучше чем сетдто2
источник

BT

Bohdan Turchyk in PHP
Andre Teros
передаю один дто1, но в однох случае мне надо и дто2, пока что просто делаю сетДто2 перед самим вызовом
в итоге у тебя никакой уверенности нет
источник

B

BIV in PHP
Andre Teros
Есть несколько классов для преобразования данных реализующих один интерфейс.
В интерфейсе метод
execute(array $data, DTO1 $dto1)
.
Одному из классов понадобилась еще информация с DTO2, другим она не нужна.
Как лучше поступить в данной ситуации? Пока что делаю
setDto2
перед
execute
.
Если не хочется делать необязательный параметр, можно запилить декоратор интерфейса и класса с методом execute, которые будут расширять
execute(array $data, DTO1 $dto1)
, принимать 2 параметра dto. А в классе, в котором нужно DTO2 использовать уже этот декоратор.🤔
источник

Р

Руслан in PHP
Andre Teros
передаю один дто1, но в однох случае мне надо и дто2, пока что просто делаю сетДто2 перед самим вызовом
в одном случае передавай дто1, во втором гибрид дто1 + дто2
источник

M

Maxim Kainov in PHP
Руслан
в одном случае передавай дто1, во втором гибрид дто1 + дто2
То есть, должно быть дто3 объединяющее два других?
источник

Р

Руслан in PHP
Maxim Kainov
То есть, должно быть дто3 объединяющее два других?
Почему нет?
источник

M

Maxim Kainov in PHP
Руслан
Почему нет?
Да, самый верный вариант, похоже.
источник

AT

Andre Teros in PHP
?DTO2 мне больше подходит, не прийдеться доставать лишнюю информацию, где она не используется
источник

SP

Sergey Protko in PHP
Лучше разные dto
источник

SP

Sergey Protko in PHP
"реюз" кода там только усложняет поддержание обратной совместимости
источник

SP

Sergey Protko in PHP
Если клиенты разные то это вообще опасно
источник