Вопросы, вопросы и еще раз вопросы...

Обсуждаем, как правильно строить приложения
Ответить
Ale}{
Сообщения: 46
Зарегистрирован: 2015.03.11, 09:47

Вопросы, вопросы и еще раз вопросы...

Сообщение Ale}{ »

Вопросов много... Прочитал много тем на этом форуме(не все к сожалению понятно) и все равно не покидает мысль что в голове компот...


Есть желание отойти от использования AR в проекте, так как проект создается не по ТЗ и будет дополняться функционалом, поэтому хочется оптимально разделить все слои. Сразу оговариваюсь - использование объектов представления (ActiveForm, виджетов и прочих перелестей из коробки) По сути от YII остануться контроллеры, роутинг, RBAC....

Хочется пройти путь - от Данных запроса - до ответа

Если можно вопросы буду задавать последовательно в одной теме.

1. возьмем любой запрос - он обладает данными. В самом простом случае (CRUD) приходят данные в обычных строковых типах - мы их сохраняем в базу. НО допустим у нас есть объект - Заказ- у него полюбому должен быть атрибут контрагент - что тоже является Объектом.Так вот что должно приходить в запросе - ссылка на Контрагента или уже объект Контрагент?
Если приходит ссылка на объект контрагента - то при создании Сущности Заказ нам нужно передать не ссылку на контрагента а сам объект - как это реализовывать? через что? Почитав форум есть мысль -
данные запроса (по сути массив)->Преобразуем в DTO ->Создаем Сущность на основе DTO.----ТУТ ПОКА СТОП!!

Мне неясно следующее - где мы преобразовываем ссылки на объекты в сами объекты?
И глобально для понимания - DTO может в себе содержать объекты или только ссылки (uuid или id)?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Вопросы, вопросы и еще раз вопросы...

Сообщение ElisDN »

Если контрагенты хранятся отдельно, то достаточно ContragentId.

Код: Выделить всё

$contragent = $this->contragentRepository->get($command->contragentId);
$order = new Order(
    $this->orderRepository->nextId(),
    $contragent->getId(),
    new Address(
        $command->country,
        $command->city,
    ),
    $command->comment;
);
$this->orderRepository->add($order);
anton_z
Сообщения: 483
Зарегистрирован: 2017.01.15, 15:01

Re: Вопросы, вопросы и еще раз вопросы...

Сообщение anton_z »

Dto должен состоять из простых типов и/или других dro.
Ответить