首先发生的事情是:init还是preDispatch?

时间:2010-09-18 19:25:11

标签: php zend-framework

我正在阅读answer to the question here并且措辞有点令人困惑。我缩短了句子,专注于我的问题

  
      
  • 为实例调用第一个preDispatch()   Zend_Controller_Plugin_Abstract ...
  •   接下来调用Zend_Controller_Action的
  • init()...
  •   
  • 此处调用控制器的preDispatch()方法......
  •   

这是否意味着在控制器本身中,init代码首先在preDispatch代码之前运行?

有一个preDispatch首先运行,但不是控制器代码,只是对于任何外部插件中可能存在的代码,是否正确?

3 个答案:

答案 0 :(得分:10)

确实,init在preDispatch之前运行。在此图中可以看到完整的事件流:

对我而言,了解完整的Zend Framework前端控制器结构非常有用。

答案 1 :(得分:6)

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

因此,它首先运行初始化以后在Controller中可能需要的任何内容

答案 2 :(得分:1)

只需将init()方法添加到您自己的操作帮助程序中,该帮助程序会挂钩到您的控制器init(),无论哪种方式,您都可以使用init()之前的preDispatch()