Локальные файлы конфигурации и Zend_Application

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

Самый простой путь решения данной проблемы, так это редактирование файла index.php. Вот код:
require_once 'Zend/Application.php';
require_once 'Zend/Config/Ini.php';
 
$config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini', APPLICATION_ENV,
            array('allowModifications'=>true));
$localConfig = new Zend_Config_Ini(APPLICATION_PATH . '/configs/local.ini', APPLICATION_ENV);
$config->merge($localConfig);
$config->setReadOnly();
 
// Создать приложение,bootstrap и запуститься
$application = new Zend_Application(
    APPLICATION_ENV,
    $config
);
$application->bootstrap()
            ->run();

Как вы можете заметить, мы создали несколько объектов Zend_Config. Один для application.ini, другой для local.ini Так же в обоих случаях мы используем APPLICATION_ENV. Это означает, что структура local.ini должна содержать такие же секции ("master") как и application.ini.

Для application.ini, мы выставили опцию "allowModifications' для того, чтобы в последствии мы могли воспользоваться методом merge(), чтобы перезаписать файл $config новыми данными из $localConfig.

После того, как мы объединим настройки, воспользуемся методом setReadOnly(), чтобы убедиться в том, что файлы не будут редактироваться в дальнейшем.

После этого, при создании Zend_Application, мы предаём $config.

Второй способ намного проще первого:
$application = new Zend_Application(
    APPLICATION_ENV,
    array(
        'config' => array(
            APPLICATION_PATH . '/configs/application.ini',
            APPLICATION_PATH . '/configs/local.ini'
        )
    )
);

Вот и всё.
Теги:
Zend_Application
Добавлено: 10 Мая 2018 13:51:59 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...