哪个先发生:init还是preDispatch?

3
我正在阅读这里的问题回答,但措辞有些令人困惑。我缩短了句子以便关注我的问题。
  • 首先,对于Zend_Controller_Plugin_Abstract的实例,会调用preDispatch()...
  • 接下来会调用Zend_Controller_Action的init()方法...
  • 在此处会调用控制器的preDispatch()方法...
这是否意味着在控制器本身中,init代码在preDispatch代码之前运行?
存在一个preDispatch,但它不是针对控制器代码的,而是针对任何外部插件可能存在的代码,是吗?
3个回答

10

确实,init方法会在preDispatch方法之前运行。下图展示了完整的事件流程:

对于我来说,理解Zend Framework前端控制器结构非常有用。


6

initpreDispatch 之前执行,init 是初始化的缩写(如果您是美国人,则为 initialization)。

因此,它首先运行以初始化控制器中稍后可能需要的任何内容。


1
只需在您自己的操作助手中添加一个init()方法,该方法将连接到您的控制器的init(),无论如何,您都可以在preDispatch()之前利用init()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接