php – Zend Framework 2中init()和onBootStrap()之间的区别?
我正在读一本关于ZF2的书,它将init()和onBootStrap()都称为Module.php中的函数,这些函数在每个页面加载期间被调用,因此应该尽可能轻量级.
除了略有不同的签名: init(ModuleManager m) onBootStrap(MvcEvent e) 我正在努力确定何时应该使用哪种,以及出于什么原因.在本书中,两种方法都被用于附加(不同)事件.有人可以提供两者之间差异的明确定义,以及一些具体的例子,我会使用一个而不是另一个(以及为什么)? 谢谢! 解决方法
你的问题的答案是时间和目的的问题. init()函数总是在onBootstrap()函数之前发生.由于init()的目的是初始化模块(例如,使用其自己的独立配置选项),因此在为给定模块运行init()时可能尚未加载其他模块.但是,onBootstrap()在所有模块初始化之后运行,并且它可以侦听不同的事件.
对此的更全面的解释可以在 就个人而言,我使用init()在一个模块中初始化一个Propel库,我在http://4zend.com/integrate-propel-orm-with-zend-framework-2/使用该技术创造性地命名为Propel. 我使用onBootstrap()来检查我的访问控制列表(哪些用户可以访问哪些资源)并相应地限制访问,如下所示: public function onBootstrap(ZendMvcMvcEvent $e) { // After the route event occurs,run the checkAcl method of this class $e->getApplication()->getEventManager()->attach('route',array($this,'checkAcl')); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |