Как вызвать событие в EventListener?

Я пишу приложение PHP и хочу реализовать медиатор шаблон для основной части моей бизнес-логики. Это «ядро» на самом деле какая-то игра с большим количеством События а также статусы. Таким образом, управляемая событиями обработка этого представляется оптимальным подходом.

Сама модель посредника не является проблемой. Мне нужно только создать EventDispatcher и приложить некоторые Listenerс этим.

(На самом деле в моем конкретном случае это немного сложнее: Listenerнужно реализовать что-то вроде Цепной из-ответственности или же государственный шаблон, чтобы обрабатывать одно и то же событие по-разному в соответствии с текущим состоянием процесса.)

Проблема в том, что обработка события может изменить состояние процесса и вызвать дальнейшие события. Это означает, что слушатели должны иметь возможность инициировать события. Это означает:

  1. Им нужно знать EventDispatcher, Итак EventDispatcher нужно либо ввести через конструктор, либо передать в уведомление (notify(string $eventName, Event $event, EventDispatcher $eventDispatcher)) метод.
  2. Каждый слушатель должен знать все о специфике всех событий, которые он вызывает. Введение их не будет практически осуществимым решением. И поэтому мы получим много new MyEvent(...) заявления в слушателях и коде станет сложнее для тестирования.

Оба имеют для меня гнилостный запах …

Как решить эту дилемму и позволить чистому коду, когда EventListenerтриггерные события?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]