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