Zend framework2 如何在zendframework 2中的module.php文件中获取service manager对象?

Zend framework2 如何在zendframework 2中的module.php文件中获取service manager对象?,zend-framework2,Zend Framework2,我在ZendFramework2模块的module.php文件中找到了以下函数。我不明白如何在此函数中获取service manager的对象($sm) ` ` 有人能解释一下如何在getControllerConfig函数中获取对象$sm吗 当ZF2启动mvc进程时,将首先注册所有默认服务 查看手册,您将了解有关这些服务的更多信息: ModuleManager是最重要的服务之一,它处理所有与模块相关的功能 您可以在Zend\Mvc\Service\ModuleManagerFactory->c

我在ZendFramework2模块的module.php文件中找到了以下函数。我不明白如何在此函数中获取service manager的对象($sm)

`

`


有人能解释一下如何在getControllerConfig函数中获取对象$sm吗

当ZF2启动mvc进程时,将首先注册所有默认服务

查看手册,您将了解有关这些服务的更多信息:

ModuleManager是最重要的服务之一,它处理所有与模块相关的功能

您可以在
Zend\Mvc\Service\ModuleManagerFactory->createService()中找到ModuleManager启动进程

请注意以下代码:

$serviceListener->addServiceManager(
    'ControllerLoader',
    'controllers',
    'Zend\ModuleManager\Feature\ControllerProviderInterface',
    'getControllerConfig'
);
这将调用
Zend\ModuleManager\Listener\ServiceListener->addServiceManager()
,并将模块名称和方法名称保存为临时名称

然后,当loadModule事件触发时,将调用
Zend\ModuleManager\Listener\ServiceListener->onLoadModule()
。在此方法中,所有从
Modele->getControllerConfig()
返回的结果都将注册为服务并放入
Zend\ServiceManager\ServiceManager

最后,当您从
getControllerConfig()
调用服务时,将调用
Zend\ServiceManager\ServiceManager->create()
,实例和ServiceManager将作为参数设置到闭包中:

foreach ($this->initializers as $initializer) {
    if ($initializer instanceof InitializerInterface) {
        $initializer->initialize($instance, $this);
    } elseif (is_object($initializer) && is_callable($initializer)) {
        $initializer($instance, $this);
    } else {
        call_user_func($initializer, $instance, $this);
    }
}
我之前写过一篇关于beta3下的ZF2的文章,也许可以帮助你(可以使用谷歌翻译)

foreach ($this->initializers as $initializer) {
    if ($initializer instanceof InitializerInterface) {
        $initializer->initialize($instance, $this);
    } elseif (is_object($initializer) && is_callable($initializer)) {
        $initializer($instance, $this);
    } else {
        call_user_func($initializer, $instance, $this);
    }
}