了解ZF2事件系统:

时间:2015-06-29 07:47:56

标签: events zend-framework2 zend-framework-mvc

正如Enrico Zimuel所展示的教程“MVC + Events + Modules: the new architecture of ZF2”所示,基本的ZF2 MVC事件结构如下所示:

ZF2-MVC-flow-events

ZF MVC Auth扩展了添加基本MVC流程,向其添加了四个事件(EVENT_AUTHENTICATIONEVENT_AUTHENTICATION_POSTEVENT_AUTHORIZATIONEVENT_AUTHORIZATION_POST)。

现在我正在阅读Apigility“Advanced Authentication and Authorization”文档,其中说:

  

为了实现与ZF2 MVC生命周期的集成以进行身份​​验证,zf-mvc-auth连接4个侦听器,然后传播自己的事件。这些监听器中的每一个都在事件MvcEvent::EVENT_ROUTE内以不同的优先级注册。

我不清楚两点:

  • “这些侦听器中的每一个都在 MvcEvent::EVENT_ROUTE” - “嵌套事件”中注册?这是什么意思?

  • 事件中
  • MvcEvent::EVENT_ROUTE 不同优先级” - 事件优先级层次结构是“嵌套”/不是直线?它是多维的吗?

1 个答案:

答案 0 :(得分:2)

您可以在事件上附加的侦听器;这些听众将按优先级命令。

当事件被触发时(比如事件MvcEvent::EVENT_ROUTE),注册的侦听器将逐个执行,从具有最高优先级的侦听器开始到最低值。

“嵌套事件”或“传播他们自己的事件”将是其中一个侦听器触发另一个事件。这方面的一个示例是the listener for rendering, \Zend\View\Http\DefaultRenderingStrategy::render(),其中在发生渲染错误时会触发MvcEvent::EVENT_RENDER_ERROR