Понимание системы событий ZF2:
Как и в учебном пособии Энрико Зимуэля " MVC + События + Модули: новая архитектура ZF2", базовая структура событий ZF2 MVC выглядит следующим образом:
ZF MVC Auth расширяет и добавляет базовый поток MVC, добавляя к нему четыре события (EVENT_AUTHENTICATION
, EVENT_AUTHENTICATION_POST
, EVENT_AUTHORIZATION
, EVENT_AUTHORIZATION_POST
).
Сейчас я читаю документацию Apigility " Расширенная аутентификация и авторизация", которая гласит:
Чтобы добиться интеграции с жизненным циклом ZF2 MVC для аутентификации,
zf-mvc-auth
провода в 4 слушателя, которые затем распространяют свои собственные события. Каждый из этих слушателей зарегистрирован в рамках мероприятияMvcEvent::EVENT_ROUTE
на разные приоритеты.
Два момента для меня неясны:
"Каждый из этих слушателей зарегистрирован в рамках мероприятия
MvcEvent::EVENT_ROUTE
" -" Вложенные события "? Что это значит?"в рамках мероприятия
MvcEvent::EVENT_ROUTE
с разными приоритетами" - Является ли иерархия приоритетов событий" вложенной "/ не прямой? Является ли она многомерной?
1 ответ
Вы бы прикрепили слушателей к событиям или к ним; эти слушатели будут упорядочены по приоритету.
Когда событие срабатывает (скажем, событие MvcEvent::EVENT_ROUTE
) зарегистрированные слушатели будут исполняться один за другим, начиная с слушателя с самым высоким приоритетом и заканчивая самым низким.
"Вложенные события" или "распространять свои собственные события" были бы тем, где один из этих слушателей запускает другое событие. Примером этого является слушатель для рендеринга,\Zend\View\Http\DefaultRenderingStrategy::render()
, где MvcEvent::EVENT_RENDER_ERROR
срабатывает при возникновении ошибки рендеринга.