Добавление нескольких конфигурационных массивов в PhalconPHP

В настоящее время я загружаю несколько конфигурационных файлов, содержащих встроенные в PHP массивы, в моем бутстрапе.

require "app/configuration/config-global.php"; require "app/configuration/config-other.php"; 

С помощью этой настройки «config-other.php» перезаписывает массив $ settings «config-global.php».

Могу ли я получить несколько советов о том, как добавить массив в мой загрузочный файл, пожалуйста.

Тим

Обновить

Вот вырезанная версия моей настройки файла bootstap, пытающаяся реализовать предложение Николаоса.

 class Application extends \Phalcon\Mvc\Application { /** * Register the services here to make them general or register in the ModuleDefinition to make them module-specific */ public function _registerServices() { //Define constants $di = new \Phalcon\DI\FactoryDefault(); $loader = new \Phalcon\Loader(); $di->set('registry', function () { return new ArrayObject(array(), ArrayObject::ARRAY_AS_PROPS); }); //load our config into the registry //$di->set('config', $config); $this->setDI($di); } public function _loadConfig() { $di = \Phalcon\DI::getDefault(); $this->processConfig('appConfig1'); $this->processConfig('globalConfig'); // Remember config_array is the merged array in the DI container $new_array = $di->registry->offsetGet('config_array'); // Optional, store the config in your DI container for easier use $di->set('config', function () use ($new_array) { return new \Phalcon\Config($config); } ); } public function main() { $this->_registerServices(); $this->_loadConfig(); echo $this->handle()->getContent(); } public function processConfig($name) { $config = array(); $di = \Phalcon\DI::getDefault(); if ($di->registry->offsetExists('config_array')) { $config = $di->registry->offsetGet('config_array'); } // Now get the file from the config require "/config/{$name}.php"; // $settings came from the previous require $new_config = array_merge($config, $settings); // Store it in the DI container $di->registry->offsetSet('config_array', $new_config); } } $application = new Application(); $application->main(); 

С приведенной выше конфигурацией я получаю:

[02-Dec-2012 09:10:43] Замечание PHP: неопределенное свойство: Phalcon \ DI \ FactoryDefault :: $ registry в /public/frontend/index.php в строке 127

[02-Dec-2012 09:10:43] PHP Неустранимая ошибка: вызов функции-члена offsetExists () для не-объекта в /public/frontend/index.php в строке 127

Попробуй это:

Зарегистрировать новую услугу в контейнере DI

 // Get the DI container $di = \Phalcon\DI::getDefault(); $di->set( 'registry', function () { return new ArrayObject(array(), ArrayObject::ARRAY_AS_PROPS); } ); 

Вышеупомянутый будет «реестром», в котором мы будем хранить файлы конфигурации.

 public function processConfig($name) { $config = array(); $di = \Phalcon\DI::getDefault(); if ($di->registry->offsetExists('config_array')) { $config = $di->registry->offsetGet('config_array'); } // Now get the file from the config require ROOT_PATH . "app/configuration/{$name}.php"; // $settings came from the previous require $new_config = array_merge($config, $settings); // Store it in the DI container $di->registry->offsetSet('config_array', $new_config); } 

И как использование вы можете сделать это:

 processConfig('config-global'); processConfig('config-other'); // Remember config_array is the merged array in the DI container $di = \Phalcon\DI::getDefault(); // Remember config_array is the merged array in the DI container $new_array = $di->registry->offsetGet('config_array'); // Optional, store the config in your DI container for easier use $di->set( 'config', function () use ($new_array) { return new \Phalcon\Config($config); } }; 

Теперь в config массиве в контейнере объединены данные.

Вы также можете создать класс, который будет инкапсулировать эту функциональность и иметь другие вспомогательные функции, чтобы очистить ссылку на контейнер DI, постоянно загружать базовый массив (глобальный) и т. Д.

EDIT : немного изменилось после комментариев