Zend framework2 Zend2隔离模块配置

Zend framework2 Zend2隔离模块配置,zend-framework2,Zend Framework2,似乎getConfig方法中的Module.php中定义的所有配置设置都在应用程序中全局合并。我的情况很奇怪,因为我需要为每个模块配置不同的配置:数据库设置、一些工厂和视图管理器设置,这些设置当前被最后加载的模块覆盖。如何为某些模块使用configs exclusive是该模块中$this->getServiceLocator()->get('Config')的作用域。我现在唯一的想法是在分派事件中将我的模块配置与$this->getServiceLocator()->get('config')

似乎
getConfig
方法中的
Module.php
中定义的所有配置设置都在应用程序中全局合并。我的情况很奇怪,因为我需要为每个模块配置不同的配置:数据库设置、一些工厂和视图管理器设置,这些设置当前被最后加载的模块覆盖。如何为某些模块使用configs exclusive是该模块中
$this->getServiceLocator()->get('Config')
的作用域。我现在唯一的想法是在分派事件中将我的模块配置与
$this->getServiceLocator()->get('config')
合并,如果这是唯一的情况,那么使用哪个优先级更好,以便我可以利用所有设置:查看管理器、服务管理器等等


对我来说,理想的解决方案是,如果某个名称空间范围内的配置设置仅在该名称空间下使用。

您可以将配置值嵌套得尽可能深

您有一个名为“mymodule”的模块,它需要连接到一个特殊的、特定于模块的数据库(与整个应用程序的主数据库不同)。您可以这样做:

mymodule.global.php.dist:

return array(
    'mymodule' => array(
        'db' => array('host'=>'localhost', ... )
    )
)

然后只需确保myModule正在查看
$config['myModule']['db']
,而不是
$config['db']

,您可以通过以下方式获取模块的配置设置:

$moduleManager = $this->getServiceLocator()->get('ModuleManager');
$applicationModule = $moduleManager->getModule('Application');
$applicationConfig = $applicationModule->getConfig();

和这里描述的差不多。如果有特定的配置,请将名称空间添加为配置数组的第一级,并将其他所有内容都放在其下。所有主要模块都是这样做的;)