gpt4 book ai didi

php - Zend Framework 2 中 init() 和 onBootStrap() 的区别?

转载 作者:可可西里 更新时间:2023-10-31 22:54:49 25 4
gpt4 key购买 nike

我正在阅读一本关于 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() 检查我的访问控制列表(哪些用户可以访问哪些资源)并相应地限制访问,如下所示:

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() 的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22512376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com