每个加载模块的每一个配置都将合并为一个配置。也就是说,这将是:
$serviceManager->get('config');
背后的原因(global|local).config.php
仅用于使用目的。全局配置文件应该始终是deployed。然而,本地配置文件只能部署为可分发文件、别名local.config.php.dist
.
无论分布在何处,都不会加载。然而,ZF2 的常见概念是将可分发文件复制到/config/autoload
-ZF2 应用程序的目录并将其重命名为local.config.php
一个例子:
// YourModule/config/module.config.php
return array(
'key' => 1337
);
// YourModule/config/local.yourmodule.php.dist
return array(
'key' => 7331
);
现在,当您发布/部署应用程序时,仅module.config.php
将会被使用。如果有人想更改您的模块的配置,他们会never touch module.config.php
,因为当您的模块更新时,该文件会不断被覆盖。
然而人们可以做的是复制:
YourModule/config/local.yourmodule.php.dist
to
/config/autoload/local.yourmodule.php
并更改此本地配置中的配置值。
要理解:
- 您应该始终针对实时场景尽可能地配置您的模块。
- 如果您有特定于环境的需求,请使用本地配置覆盖此配置
- 本地配置永远不会自动部署,这是需要从环境本身内部完成的手动任务
希望这能更清楚一点
最终:
- 为实时场景配置模块
- 在您的开发机器上创建一个
/config/autoload/mymodule.local.php
并覆盖你的ttl
以及它的开发价值
加载顺序:
最后一个有趣的部分是配置文件的加载顺序,我已经完全忘记了。由于所有文件都已合并,因此请务必注意这一点!
- 首先加载的是
/config/application.config.php
- 其次加载的是每个模块
/modules/{module}/config/module.config.php
*
- 最后但并非最不重要的一点是,将加载可自动加载的文件
/config/autoload/{filename}.php
asterix它实际上是NOT module.config.php
这被称为,而是Module
-类配置函数。主要有这些:
getConfig()
getServiceConfig()
getViewHelperConfig()
- 最终一切都在Zend\ModuleManager\Feature\{feature}ProviderInterface
如果我明白的话这部分的ConfigListener正确的话,那么getConfig()
将首先调用所有专门的{feature}ProviderInterfaces
将覆盖的数据getConfig()
,但不要认为这是理所当然的,它需要检查!