public function mergeSettings($settings = [])
{
$this->_config = CMap::mergeArray($this->_base, ['preload' => CMap::mergeArray(isset($this->_config['preload']) ? $this->_config['preload'] : [], isset($settings['preload']) ? $settings['preload'] : []), 'import' => CMap::mergeArray(isset($this->_config['import']) ? $this->_config['import'] : [], isset($settings['import']) ? $settings['import'] : []), 'modules' => CMap::mergeArray(isset($this->_config['modules']) ? $this->_config['modules'] : [], isset($settings['modules']) ? $settings['modules'] : []), 'components' => CMap::mergeArray(isset($this->_config['components']) ? $this->_config['components'] : [], isset($settings['component']) ? $settings['component'] : []), 'aliases' => CMap::mergeArray(isset($this->_config['aliases']) ? $this->_config['aliases'] : [], isset($settings['aliases']) ? $settings['aliases'] : []), 'behaviors' => CMap::mergeArray(isset($this->_config['behaviors']) ? $this->_config['behaviors'] : [], isset($settings['behaviors']) ? $settings['behaviors'] : []), 'commandMap' => CMap::mergeArray(isset($this->_config['commandMap']) ? $this->_config['commandMap'] : [], isset($settings['commandMap']) ? $settings['commandMap'] : [])]);
if ($this->env == self::ENV_WEB) {
unset($this->_config['commandMap']);
}
if (!array_key_exists('rules', $settings)) {
$settings['rules'] = [];
}
if (!array_key_exists('cache', $settings)) {
$settings['cache'] = [];
}
if (isset($this->_config['components']['urlManager']['rules'])) {
// Фикс для настроек маршрутизации:
$this->_config['components']['urlManager']['rules'] = CMap::mergeArray($this->_config['components']['urlManager']['rules'], $settings['rules']);
}
if (isset($this->_config['components']['cache'])) {
// Слитие настроек для компонента кеширования:
$this->_config['components']['cache'] = CMap::mergeArray($this->_config['components']['cache'], $settings['cache']);
}
// Создание кеша настроек:
if (($error = $this->dumpSettings()) !== true) {
throw new Exception($error->getMessage());
}
return $this->_config;
}