Почему бомбит, я сразу же указал на проблему. Как и пару раз до этого.Ничего себе у тебя бомбит. Это что-то личное?
При этом ты сам же тут же подтвердил мои слова, что это не лучший код.
Это какой-то недоделанный пример для какой-то презентации

Почему бомбит, я сразу же указал на проблему. Как и пару раз до этого.Ничего себе у тебя бомбит. Это что-то личное?
Это какой-то недоделанный пример для какой-то презентации
Несомненно. Код analogue проще понять именно потому что он небольшой. Он и не претендует на прям полноценный DM, это такая минималистичная реализация самых основных кейсов.Doctrine 2.5 по мне более элегантный и функциональный нежели Analogue.
Скорее просто неохота вручную делать закат солнца. Хочется persist() и всё, а не фигурно выпиливать SQL лобзиком.люди очень большое значение придают тому, как должно сохраняться
Остаётся написать инструменты, которые будут это красиво и просто делать.А для чего же тогда используете ES-модели? Или имелось ввиду модели без ES-инфраструктуры, а в репозиториях получаем все события и в рамках транзакции пишем в БД, например, нативным SQL или датамэппером.
Если так, то получается красиво, используем доменную модель, соблюдаем SRP, можно любую глубину собрать по связям моделей, события выстраиваются в линию, и в персистентности у нас чистый оптимизированный SQL без оверхеда.
Да, имелось в виду это.А для чего же тогда используете ES-модели? Или имелось ввиду модели без ES-инфраструктуры, а в репозиториях получаем все события и в рамках транзакции пишем в БД, например, нативным SQL или датамэппером.
А эти проблемы не имеют никакого значения, поскольку не имеют отношения к демонстрируемым концепциям. Там на это вообще не надо смотреть.Почему бомбит, я сразу же указал на проблему. Как и пару раз до этого.
Получается в контексте TripPlanner при создании/обновлении/удалении нового маршрута нужно пробежать по всей глубине объектов (Route, Leg и т.д.) и собрать ивенеты со всех объектов, коллектора у нас нет?Во-первых, именно модель знает о том, что же там внутри нее изменилось. Поэтому это логично записывать события внутри нее, а не снаружи. Это пока не требует именно ES-подхода, но очень близко к нему (мы просто записываем ->recordThat(new EventWasBuzzed() события по мере необходимости).
Тут лучше либо записывать события всегда в aggregate root, либо иметь какой-то EventHistory, инстанс которого передавать в дочерние объекты.Получается в контексте TripPlanner при создании/обновлении/удалении нового маршрута нужно пробежать по всей глубине объектов (Route, Leg и т.д.) и собрать ивенеты со всех объектов, коллектора у нас нет?
Это уже скорее проблема монолитных репозиториев и отсутствия bounded contexts, так что в плане изоляции ты прав.Меня в таком подходе смущает другое - при событийном подходе получается довольно сложный flow control, и в какой-то момент уже фиг поймешь, кто на ком стоял. Разве что изолировать события в рамках одного небольшого контекста.
Ну, конечно, в ST не так, я скорее про саму идею изначальную (объекты меняются сообщениями в соответствии с контрактами, и на этом всё).Event и SRP описывают отношения объектов на разных уровнях, одно никак другому не мешаетES-модель нарушает SRP, т.к. приходиться в рут аггрегате иметь инстанс накопителя событий и передавать его дочерним объектам, т.е. мы и за Entity отвечаем и знаем что есть коллектор событий.
Объект - это объединение данных и логики. Логика статична, а ее исполнение определяется событиями. Так объекты "реагируют" на внешние события.сущность должна знать что у неё есть еще одна обязанность помимо бизнес-логики, это обработка Event, т.е. я не могу просто создать сущность и работать с ней, мне нужно внедрить это обработку.

Здесь всё зависит от того, как ты определяешь «ответственность». Ответственность модели — моделировать понятие из предметной области (как ни странно). События, как часть этого процесса моделирования — лишь деталь реализации.Так понимаю ES-модель нарушает SRP, т.к. приходиться в рут аггрегате иметь инстанс накопителя событий и передавать его дочерним объектам, т.е. мы и за Entity отвечаем и знаем что есть коллектор событий.