Zend framework2 如何在zendframework 2中的module.php文件中获取service manager对象?
我在ZendFramework2模块的module.php文件中找到了以下函数。我不明白如何在此函数中获取service manager的对象($sm) ` `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
有人能解释一下如何在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);
}
}