Я ищу возможность переопределить существующие значения конфигурации с новыми во время выполнения.
Так что вот так было бы неплохо
$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
файл в папке config ваших модулей. Вам не нужно делать это с помощью ServiceLocator
, Массив в этом файле является глобальным массивом. Ключи в массиве будут перезаписаны в том порядке, в котором вы загружаете свои модули.