Как огранизовать работу с ActiveRecord и агрегированными данными в нем?

Вурдалак

Продвинутый новичок
Я и писал, когда пятерка вышла, что комманд бас был бесполезен, потому что его никуда внутри фреймворка не был воткнут нормально, и эвенты были параллельно с ними, перекрывая с ним кусками функционал, и просто «был» Там надо было выкинуть что-то одно, и завязаться целиком на второе. По привычке видимо решили оставить евенты, хотя я бы предпочел что бы выкинули евенты и доделали команд бас.
Да, технически они реализуются практически идентично, но как минимум нужны разные интерфейсы для этих command/event bus, потому что есть серьёзное семантическое отличие. Можно иметь «что-то одно» только в том случае, если ты напрямую не юзаешь в своём коде контракты Laravel, а делаешь собственные и в качестве реализации используешь компоненты того же Laravel. А так почти никто не делает :)
 

флоппик

promotor fidei
Команда форума
Партнер клуба
@Вурдалак ну я больше к единообразию подхода — если у тебя половина кода слушает евенты, а другая описана как команды, торчащие из команд баса, получается мутная каша из логики.
 

Redjik

Джедай-мастер
Мне вам опять ссылку на бродвеев скинуть? сколько можно юзать что-либо другое, ребята кучу наград и грантов получили за либу
 

Вурдалак

Продвинутый новичок
Мне вам опять ссылку на бродвеев скинуть? сколько можно юзать что-либо другое, ребята кучу наград и грантов получили за либу
Да это никому неинтересно, потому что в первую очередь это инфраструктура для CQRS + ES, а ES тут похоже никто не юзает. Реализация command/event bus очень тупая (на том же уровне, что и у них), поэтому смысла юзать для этого конкретно Broadway вообще нет.

Что тебя так возбудило в этой либе? Награды?
 

Вурдалак

Продвинутый новичок
А что тебе так в ней не нравится... фатальный недостаток?
сколько можно юзать что-либо другое
Сам себя затроллил.

В «реализации» command/event bus основную часть занимает просто конфигурирование. А конфигурирование очень тесно связано, например, с DI-конфигами. Что удобнее будет конфигурировать, то и лучше юзать. В остальном, если ты юзаешь свои интерфейсы поверх этих сторонних библиотек, то ты не увидишь вообще никакой разницы, полиморфизм называется.
 

Redjik

Джедай-мастер
Laravel с одной стороны и DI конфиги, удобное конфигурирование, хороший DIC...

это же вообще концепции из разных вселенных...
поэтому лучше использовать инструмент, нежели костылить на ущербном Laravel DI контейнере

не надо тут про сферического коня в вакууме, мы же обсуждаем проблему в разрезе ларки?
 

Вурдалак

Продвинутый новичок
@Вурдалак ну я больше к единообразию подхода — если у тебя половина кода слушает евенты, а другая описана как команды, торчащие из команд баса, получается мутная каша из логики.
О каком единообразии идёт речь? Это не взаимозаменяемые вещи. Команда — что хочу сделать. Событие — что было сделано. События должны возникать как результат действия команд. У команды ровно один command handler, у события — 0..N. Я хочу отредактировать пост на форуме — я посылаю EditPostCommand. Пост отредактировался — появляется событие PostWasEditedEvent. EditPostCommand и PostWasEditedEvent не взаимозаменяемы.
 

Вурдалак

Продвинутый новичок
поэтому лучше использовать инструмент, нежели костылить на ущербном Laravel DI контейнере
Как ты будешь регистрировать command/event handler'ы? Регистрация через DIC нужна для зависимостей (внезапно) и для lazy loading.
 

Redjik

Джедай-мастер
Ты вообще пробовал это без костылей на Laravel сделать? =))
 

флоппик

promotor fidei
Команда форума
Партнер клуба
О каком единообразии идёт речь? Это не взаимозаменяемые вещи. Команда — что хочу сделать. Событие — что было сделано. События должны возникать как результат действия команд.
Я про конкретную реализацию в ларавеле, где то, что торчало из комманд баса в 5.0 версии, евентов не порождало, а многое в него не было воткнуто, и регистрировать команды и евенты нужно было в разных местах логики. То, что в ларавеле зовется евентами, это евенты + хендлеры (и хендлерами оно и пересекалось с ожидаемым функционалом комманд баса)
 
Сверху