(Платформа зенда> Zend_Config), Как избегать использования конфигурация .xml или .ini?

Я не думаю, что использование .ini или .xml файл является хорошей идеей с проектами интенсивного трафика потому что каждая загрузка страницы причины, анализирующие config.ini или .xml файл.

Там какой-либо путь состоит в том, чтобы заменить использование .ini/.xml регулярным массивом php как конфигурация? Теперь php ini похож на это...

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
phpSettings.date.timezone = "Europe/London"
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
resources.db.adapter = PDO_MYSQL
resources.db.params.host = localhost
resources.db.params.username = rob
resources.db.params.password = 123456
resources.db.params.dbname = zf-tutorial
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
resources.view.doctype = "XHTML1_STRICT"

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1

Я хочу что-то вроде этого...

<?php

$config = array(
    'production' => array(
        ['phpSettings.display_startup_errors'] => 0,
        ['phpSettings.display_errors'] => 0,
    ),
);

Действительно ли это возможно? Что я должен сделать и как я должен сказать приложению использовать свой собственный Config.php?

Спасибо и жаль о моем английском языке.

UPD: Я думаю, что передача массива конструктору Zend_Application является правильным путем?

5
задан Kirzilla 28 February 2010 в 11:50
поделиться

2 ответа

Да, вы можете использовать массив для инициализации данных для объекта Zend_Config ; взгляните на эту страницу руководства Zend Framework (цитата из arround Пример №1 ) :

Обычно ожидается, что пользователи будут используйте один из классов адаптера , например Zend_Config_Ini или Zend_Config_Xml , но если данные конфигурации доступны в массиве PHP, один может просто передать данные конструктору Zend_Config , чтобы использовать простой объектно-ориентированный интерфейс


Вы также следует взглянуть на Пример № 2 на той же странице (цитируя то, что вокруг него) :

Часто желательно использовать чистый {{1} } Файл конфигурации на основе PHP.Следующий код показывает, насколько легко это можно сделать

По сути, вы сначала создаете файл PHP, содержащий конфигурацию:

// config.php
return array(
  ...
  ...
);

А затем из другого файла используйте вместо конфигурации file:

$config = new Zend_Config(require 'config.php');


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

Решение, которое можно использовать, - это кэшировать данные Zend_Config :

  • Прочитать их из файла .ini
  • Сохранить их в каком-либо механизме кеширования
  • И для следующих страниц загрузите их из кеша вместо повторного анализа файла .ini .
8
ответ дан 13 December 2019 в 22:06
поделиться

Лучше всего кэшировать результат синтаксического анализа php.ini. Но я не думаю, что это действительно вызовет у вас какие-либо проблемы.

1
ответ дан 13 December 2019 в 22:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: