Zend 2 模块中是否需要 onBootstrap()?

Is onBootstrap() necessary in a Zend 2 module?

在 Zend 2 skeleton application 中,应用程序 module.php 包含一个 onBootstrap() 函数:

class Module
{
    public function onBootstrap(MvcEvent $e)
    {
        $eventManager        = $e->getApplication()->getEventManager();
        $moduleRouteListener = new ModuleRouteListener();
        $moduleRouteListener->attach($eventManager);
    }
...

然而,这在模块创建中没有提到documentation

是否有必要在每个模块中实现这个功能?如果是,为什么?它的目的是什么?

简答:不,没有必要。

ModuleRouteListener 是一项使用 __MODULE____CONTROLLER__ 键而不是 FQCN 指定路由的功能。如果您不需要该功能(在大多数开发良好的应用程序的情况下都是如此),则不需要此路由侦听器。

此外,您只需要添加一次,而不是为每个模块添加。

最后一点,只将代码放在 onBootstrap() 中,这是非常高效的。它会根据每个请求执行,所以如果你做了很多工作,这会显着降低你的应用程序的速度。所以请注意你在那里做什么!