我正在寻找可能在运行时覆盖现有配置值的可能性。
SO sth。这样会很好:
$this->serviceLocator->set('Config', $this->config);
有办法做到吗?
是的,您可以做到。您是否应该这样做是整个问题。所以:
$this->serviceLocator->setAllowOverride(true);
// service keys are case insensitive
// just remember that $this->config should contain the whole config
$this->serviceLocator->setService('Config', $this->config);
$this->serviceLocator->setAllowOverride(false);
对于setService
,您需要切换一个称为allowOverride
的标志。您可以在这里看到。之后,您可能应该禁用覆盖,因此另一个呼叫setAllowOverride
。
另外:您可以挂钩EVENT_MERGE_CONFIG
并在此处更改。
现有配置值可以通过自定义在模块的配置文件夹中的config.php
文件中进行自定义。您无需使用ServiceLocator
来执行此操作。该文件中的数组是一个全局数组。数组中的键将按您加载模块的顺序覆盖。