2016-12-13 2 views
0

Имея систему mvc, лучше ли запускать события в контроллере или в службах, которые были введены, имеет зависимости?Какое место лучше всего запускать в MVC?

Например.

class MyController 
{ 
    $brainStorage->store($yellowBrain); 

    $EventDispatcher->dispatch(new BrainCreatedEvent($yellowBrain)); 

... 

Или должно быть хранилище для запуска события?

Я предпочитаю, чтобы классы управления были единственными, кто знал о событиях домена.

Wich - за и против?

ответ

0

В случае, если ваш контроллер начнет обработку событий, у него не будет единой ответственности, поэтому наилучшим вариантом, на мой взгляд, является создание абстракции и разрешение клиенту алгоритма для внедрения в службу приложений, которая будет управлять вашим рабочим процессом (Use шаблона стратегии, IOC, удалите запахи кода, ваш код начнет расширяться и SOLID)
Надеюсь, что это поможет решить, с уважением!

+0

Elias, являющийся ответственностью контроллера? Одноместный? :-) – zioMitch

+0

Я спросил, где не запускать, где слушать. Триггер - это не то же самое, что слушать. Запуск управления не осознается. – zioMitch

+0

Служба приложения должна инициировать события, чтобы они не могли прочитать бизнес-объект-> изменить его-> сохраняемые изменения-> события триггера после сохранения. Если вы разместите всю эту логику в этом классе, вы можете иметь несколько клиентов, потребляющих одну услугу. –

Смежные вопросы