在Zendframework 2中,我按照这个链接创建了新的模块MyModule:https://stackoverflow.com/a/17969889/2644574 to 设置DB适配器动态,它运行良好。
但我从不从这个模块调用MyModule模块或任何函数。
有谁能解释一下,在不调用模块MyModule的情况下,DB适配器是如何动态地设置的?
发布于 2014-03-01 14:43:32
从您提供的链接中创建的步骤1到步骤4中的代码只是如何创建适配器的模板。在步骤5中,他们解释说,您必须向控制器添加一个函数。
public function getYourTable()
{
if (!$this->yourTable) {
$sm = $this->getServiceLocator();
$this->yourTable = $sm->get('YourModule\Model\YourTable');
}
return $this->yourTable;
}当调用该函数时,调用服务管理器,如果适配器不存在,则创建适配器。在服务管理器的配置中,定义了如何创建这些服务以及在哪里找到它们。然后通过composer或ZF2模块管理器的自动加载功能加载它们。
这是可能的,因为您通过函数向全局服务管理器注册了服务。
getServiceConfig()因此,对于服务管理器来说,代码来自哪个模块并不重要。
https://stackoverflow.com/questions/22064805
复制相似问题