php – Zend Framework 2中init()和onBootStrap()之间的区别?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – Zend Framework 2中init()和onBootStrap()之间的区别?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在读一本关于Zf2的书,它将inIT()和onBootStrap()都称为Module.PHP中的函数,这些函数在每个页面加载期间被调用,因此应该尽可能轻量级.

除了略有不同的签名:

init(ModuleManager m)
onBootStrap(MvcEvent e)

我正在努力确定何时应该使用哪种,以及出于什么原因.在本书中,两种方法都被用于附加(不同)事件.有人可以提供两者之间差异的明确定义,以及一些具体的例子,我会使用一个而不是另一个(以及为什么)?

谢谢!

解决方法

你的问题的答案是时间和目的的问题. init()函数总是在onBootstrap()函数之前发生.由于init()的目的是初始化模块(例如,使用其自己的独立配置选项),因此在为给定模块运行init()时可能尚未加载其他模块.但是,onBootstrap()在所有模块初始化之后运行,并且它可以侦听不同的事件.

对此的更全面的解释可以在
http://framework.zend.com/manual/2.3/en/modules/zend.module-manager.module-manager.html
以及文档中的下一页
http://framework.zend.com/manual/2.3/en/modules/zend.module-manager.module-class.html

就个人而言,我使用init()在一个模块中初始化一个PRoPEl库,我在http://4zend.com/integrate-propel-orm-with-zend-framework-2/使用该技创造性地命名为Propel.

我使用OnBootstrap()来检查我的访问控制列表(哪些@L_126_17@可以访问哪些资)并相应地限制访问,如下所示:

public function onBootstrap(\Zend\Mvc\MvcEvent $e) {
    // After the route event occurs,run the checkAcl method of this class
    $e->getApplication()->getEventManager()->attach('route',array($this,'checkAcl'));
}

脚本宝典总结

以上是脚本宝典为你收集整理的php – Zend Framework 2中init()和onBootStrap()之间的区别?全部内容,希望文章能够帮你解决php – Zend Framework 2中init()和onBootStrap()之间的区别?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。