Юра
Хорошо
Гена
Ведь я уже выше писал что и у меня немало сущностей анемичные потому что просто отражают информацию
Юра
Пример другой
Юра
Энтити с записью ставок
Юра
На спорт
Юра
Поля price, sport, match, coeff
Юра
И есть еще поле
Юра
discount
Юра
Скидка к примеру или понижающий коэффициент
Юра
Скидка вычисляется на основании всяких правил, истории юзера и т.д.
Юра
Её в энтити суватб эту логику?
Гена
хах
вы реально не понимаете. Вы каждый раз предлагаете уже какую-то архитектуру. Ощущение что вы с заказчиком на его языке никогда не общались.
Бизнес модель и ее логика это не про поля. У нас даже БД нет, она там не существует и нас не интересует
Гена
То есть вы про пркладные задачи симфони
я про архитектуру
я пишу о богатой доменной модели без указания фреймворка языка
вы переводите на свои примеры с ентити из документации симфони
Юра
Вообщем тогда просто скажу что как только ваша энтити станет зависима от другого сервиса, вся архитектура ваша сломается
Гена
Доменные сущности не в курсе сервисов
Гена
по определению
Гена
ну не считая Domain Service
но это немного о другом
Юра
И что это значит в случае симфы?
Юра
Да вы мастер воду в ступе гонять
Гена
Например у меня сейчас в доменом слое зависимость от Симфони только аннотации доктрины
Гена
точнее даже не от симфони а от доктрины
Юра
Тогда дацте определения что такое rich model
Гена
и то это комментарии
Юра
Ну тут чат по симфони
Юра
Поэтому ваши доводы как бы не в тему
Гена
Странно. посмотрел еще раз. все верно мой проект на симфони 5
модели у меня не анемичные.
То есть бизнес логика самого объекта инкапсулирована в нем. Опять же это yii с его god models
Насчет как понять что в сущности а что в сервисе, использую простой принцип
Если можем использовать публичный интерфейс модели то используем сервис
Если же нужен доступ к приватным полям то создаем метод в модели
Юра
Покажи пример
Юра
Как мне передать в энтити сервис?
Гена
зачем ты упорно туда пытаешся передать сервис?
Maxim Kainov
Юра
Энтити у меня требует посчитать стоимость товара в рублях
Юра
Ей нужен кто-то кто скажет по какому курсу
Юра
Еще ей нужен логгер
Юра
Чтобы залогировать свое поведение в деве
Юра
Потому что логика в ней
Юра
Сложная бизнесовая
Юра
Вот скажи мне как ты будешь логировать бизнес логику внутри энтити?
Юра
Или это плохой пример?
Maxim Kainov
Еще ей нужен логгер
Тогда ентити генерит событие, которое обрабатывает сервис и запускает логгер )
Юра
Тогда ей нужен ивент диспачер
Юра
А еще она должна отправить в очередь ребита задачу
Юра
На обработку заказа
Юра
Секта DDD какая-то
Maxim Kainov
Извращенцы, короче
Гена
Ахаха
Гена
Я не могу
Гена
Maxim Kainov
🤣
Гена
Юра
А потом приходит манагер и говорит, мне надо вообщем сделать апи, которое возвращает все заказы, которые валидны для обработки, и ты такой садишься да без проблем, у меня логика в энтити уже есть, выбираешь все заказы чтобы дернуть вожделенный метод entity->isTransitionValid и смотришь как твой сервер погибает обрабатывать миллионы энтитей
Юра
Как ты событие генерить будешь?
Гена
Юра
Так логика в энтити
Гена
Юра
Конечно кидай
Юра
Кидай ссылку на доку
Юра
Я не знаю как из энтити кинуть событие
Юра
А вообще ты знаешь даже задачка еще лучше. Как ты сделаешь транзакционность?
Юра
Я имею в виду либо логика выполняется и данные сохранятся в бд, либо логика не выполняется и все данные ролбечатся?
Юра
Когда ты делаешь что-то внутри энтити ты еще не уверен что она сохранится без ошибки
Гена
Maxim Kainov
Юра
Ну вот создаётся заказ
Юра
Ладно он скажет что есть preFlush, postFlush и т.д.
Maxim Kainov
Maxim Kainov
Хотя не, хз
Юра
Только если ты выполняешь логику в postFlush и происходит ошибка ту все, приехали
Юра
Энтити уже в БД
Юра
А логика не выполнилась
Юра
Незадачка
Maxim Kainov
Ага