Юра
Но если к примеру там просто геттер который возвращает полное имя конкатенируя имя и фамилию не вижу ничего в этом плохогр
Maxim Kainov
Юра
Ну да
Юра
В общем могу сказать что я использовал rich модели в своё время но в итоге отказался от этой идеи потому что она плохо масштабировалась
Юра
Но иногда надо самому к этому прийти чтобы понять
Гена
И? Теперь у вас куча сервисов которые манипулируют анемичными сущностями?
Юра
Да есть разные способы. Но по сути да сервисы которые манипулируют моделями
Юра
Анэмичные слово ещё тако, негативное
Юра
Тогда давайте назвать не РИЧ модели а жирные
Гена
То есть по сути вы занимаетесь процедурным програмированием.
множеством методов манипулируете структурами данных.
Юра
Ну под это определение попадает что угодно
Dmitry
Как пример "для чего дто"
На сайте заполняется форма из n+ полей, данные потом раскидываются на m+ entity, причем часть полей не мапится в entity, а служит индикатором или параметром для дальнейших действий или вычислений.
Поэтому я лучше приму данные и провалидирую, в dto, а уж потом сделаю нужные вычисления и кину данные в entity
Юра
Я не отрицаю что дто это плохо, просто не пойму зачем его использовать всегда
Юра
К примеру на обычные круд операции
Юра
Да и я не против дто, скорее против рич моделей
Юра
У нас на проекте вообще была аннлтация в контроллере типо какой класс дто использовать, а дальше оно само мапило в дто и валидирлвало, в итоге в контроллер приходила всегда валидная дто
Гена
Ну под это определение попадает что угодно
Ну так ООП с анемичной моделью я не вижу. Инкапсуляции уже нет. Методы для работы с сущностью гуляют где-то снаружи как было до ООП.
CRUD мы сейчас не рассматриваем. Там по сути форма мапится на дб.
Но ведь проекты это чаще всего не CRUD
Юра
А кто вам вообще сказал что orm это про ООП
Юра
Вы можете вообще без геттеров сеттеров работать
Юра
Орм это механизм мапинга объектов
Юра
То ято вы налепили туда логики и назвали это ооп эио чисто ваша заслуга
Гена
если у вас в слое бизнес логики есть полноценные сущности, а анемичные используются только для маппинга то я не прав конечно
Maxim Kainov
Сергей
А чего за фигня в доктрине с orphanRemoval?
Удаляю связанную сущность. В итоге вместо одной этой сущности удаляются все, связанные с родительской?
Maxim Kainov
Maxim Kainov
Гена
а что у нас кроме геттеров и сеттеров в анемичной модели осталось?
Maxim Kainov
Maxim Kainov
Гена
Maxim Kainov
Юра
Юра
А не только связи
Юра
Стремная штука
Maxim Kainov
Maxim Kainov
Maxim Kainov
Так можно на каждую операцию сделать сервис если захотеть. А как без сервисов это сделать.
Сергей
Где то у тебя косяк
короче если кому интересно - было так
public function setSteps($steps): self
{
$this->steps = $steps;
return $this;
}
сделал так
public function setSteps($steps): self
{
$this->steps->clear();
foreach ($steps as $step) {
$this->steps->add($step);
}
return $this;
}
теперь всё работает
Сергей
ууу
Maxim Kainov
Maxim Kainov
Maxim Kainov
Ты сделаешь сервисы, а общую логику поместишь в ентити. Но если логика будет меняться, тебе придется постоянно прекидывать код из ентити в сервисы и обратно.
Гена
Сергей
Maxim Kainov
Maxim Kainov
То есть, два разных сценария использования
Юра
Я думаю не зря энтити в симфе не являются сервисами
Юра
Репозитории являются
Юра
Энтити явно внесены в exclude
Юра
Они нам как бы намекают
Гена
То есть, два разных сценария использования
Почему вы решили что логика создания заказа у клиента и менеджера одна?
Я вижу что это 2 разных контекста. И рамках каждого тот же Заказ может быть как полноценной сущностью так и просто структурой данных.
Ваш вариант с сервисами что будет делать если создание заказов у каждого будет свое? Появится 2 сервиса? Потом 20 сервисов?
Гена
пример вообще не удачный
так как Покупатель или Менеджер не являются владельцами Заказа.
Гена
А вот Заказ и Товарные Позиции
Maxim Kainov
Гена
Заказ вполне может иметь нужные методы для упраления ТП входящими в него
Гена
сервис в данном случае это отказ от ООП
Maxim Kainov
Maxim Kainov
Гена
Maxim Kainov
Maxim Kainov
Maxim Kainov
Ооп же
Гена
что ооп?
Гена
Суть в том что если вы в бизнес слое всю бизнес логику размазываете по сервисам это существенно ухудшает структуру и поддержку проекта.
Бизнес логика все таки должна отражать реальный мир. При общении с теми же заказчиками.
Maxim Kainov
Maxim Kainov
Он может изменять структуры
Maxim Kainov
Или свои поля
Anonymous
Господа как часто вам предлагали выполнить тестовое на псевдокоде и в формате пдф
Anonymous
Мне вот предложили и стало несмешно
Maxim Kainov