2012-06-13 3 views
3

Я пытаюсь использовать новый Eventmanager для Zend Framework 2. Я действительно понимаю basic usage. Но я не уверен, как использовать это в реальном проекте или, скорее, где идти с кодом.Как (или WHERE) использовать EventManager Zend Framework 2?

Например: Во введении от Роба Аллена (ссылка выше) он запускает два события в методе «findById». Куда должен поступать код для слушателей? По-моему, это не имеет смысла помещать этот код в класс PhotoMapper, или я ошибаюсь?

ответ

0

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

В качестве первого шага мы можем определить, что слушателю необходимо выполнить свою работу. Некоторые вещи, которые он знает при создании, другие должны передаваться при срабатывании события.

Например, для прослушивателя кеша я могу создать экземпляр в Bootstrap с информацией о том, где кешировать, время жизни и т. Д. Возможно, даже захватите экземпляр кэша, полностью настроенный и готовый перейти от ресурса cachemanager. Это могут быть конструктивные параметры для объекта-слушателя.

Тогда, возможно, в Bootstrap, я зарегистрировал бы этого слушателя с менеджером событий, подписавшись на ваше мероприятие и приложив метод, который вы хотите запустить при запуске события. Разумеется, эта подпись метода должна быть совместима с информацией, которую вам предоставит менеджер событий.

Я предполагаю, что идея состоит в том, что этот слушатель объект имеет потенциальные преимущества:

  1. будучи одинарной responsibilty, поэтому более низкую сложность и проще тестировать

  2. мы надеемся быть достаточно общим, чтобы эта один слушатель может обрабатывать несколько событий.

Здесь немного морщин. Может показаться, что необоснованная производительность удалась, чтобы создать экземпляр и зарегистрировать слушателя только в том случае, если какой-то процесс нисходящего процесса может инициировать событие, на которое он подписан. Вот здесь и появляются статические слушатели. Снова регистрация выполняется раньше (например, Bootstrap), но слушатель не создается, пока он действительно не нужен.

Раскрытие информации: Возможно, у меня это совершенно не так. Поэтому, если кто-то хочет выправить меня, это будет здорово. ;-)

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

  • Нет связанных вопросов^_^