zf2控制器中的init方法

时间:2012-08-13 13:16:09

标签: zend-framework zend-framework2

在Zendframework 1中,我们使用init()方法初始化控制器中的东西。我看到这是从zenframework 2中取出的。为什么?什么是在zf 2中实现相同功能的最佳方法。我正在升级我在zf1中开发的先前项目,我可以看到zf2中的事情与zf1相比发生了很大变化。

zf2中是否还有其他更改,我们在zf1中使用其他方法,例如preDispatch()postDispatch()

有人经历过这个吗?

3 个答案:

答案 0 :(得分:12)

在zf2控制器中,ControllerLoader是ServiceManager的子类,它是一个子类。如果您需要初始化控制器,请使用工厂或__construct。使用__construct进行简单的初始化,如果控制器消耗其他需要注入的对象,则使用Factory。

preDispatchpostDispatch也支持新事件系统。要在zf2中获得相同的结果,请为disptachrender事件注册事件处理程序。有关mvc envents的完整列表,请参阅http://akrabat.com/zend-framework-2/a-list-of-zf2-events/

另外,请看一下设置控制器工厂ZF2 how to get entity Manager from outside of controller

的示例

答案 1 :(得分:8)

我认为你可以将它放入控制器中,它会起作用。

public function onDispatch(MvcEvent $e)

答案 2 :(得分:0)

由于OP提及postDispatch,值得注意的是__destruct现在以类似的方式工作。但是,一个很大的区别是,无法阻止执行(例如通过exit;)确定对象的拆除。