动态DB适配器如何在ZF2中工作?

时间:2014-02-27 09:52:28

标签: php zend-framework2

在Zendframework 2中,我根据以下链接创建了新模块MyModule:https://stackoverflow.com/a/17969889/2644574动态设置数据库适配器 它工作正常。

但我从不打电话给 MyModule 模块或该模块的任何功能。

任何人都可以解释一下,如何以及何时动态设置数据库适配器而不调用模块 MyModule

1 个答案:

答案 0 :(得分:0)

您在步骤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()

所以对于服务经理而言,代码来自哪个模块并不重要。