@topuserman

Как правильно: агрегация DTO-объекта, или дублирование свойств в классе?

Класс Order, в конструкторе принимает DTO-объект с полями $orderId, $orderAmount и т.д.

Как правильно DTO-объект внедрять в класс ?

class Order {
    private int $orderId;
    private float $orderAmount ;
   // .. и тут все свойства из DTO

    public function __construct(OrderDTO $orderDTO) {
           $this->orderId = $orderDTO->orderId;
           // ...
    }
}


или агрегировать объект DTO прямо в класс:

class Order {
    public OrderDTO $orderDTO;

    public function __construct(OrderDTO $orderDTO) {
           $this->orderDTO= $orderDTO->orderId;
    }
}


?
  • Вопрос задан
  • 165 просмотров
Пригласить эксперта
Ответы на вопрос 2
@galliard
DTO вообще не должен в конструктор заходить, а разбираться при вызове конструктора, то есть:
$order = new Order($orderDTO->orderId, $orderDTO->orderAmount);
Ответ написан
Alex_Wells
@Alex_Wells
PHP/TS/Kotlin developer
Ну хранить поля в Order'е, конечно, отдельно. ДТО служит для передачи данных, а не хранения в модели. Какой тогда вообще смысл от Order?

Можешь в конструктор принимать OrderDTO и там его распаковывать, если так удобней.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы