Programmer's Reference Guide

Теоретические основы работы с Zend_Config

Zend_Config_Ini

Zend_Config_Ini дает разработчикам возможность хранить конфигурационные данные в знакомом большинству формате INI и считывать их в приложении с использованием синтаксиса вложенных свойств объекта. Формат INI специализируется на обеспечении иерархии конфигурационных данных и наследования между разделами конфигурационных данных. Иерархии конфигурационных данных поддерживаются посредством разделения ключей точкой ("."). Раздел можно расширять или наследовать от другого раздела посредством указания имени раздела с двоеточием (":") и именем раздела, от которого наследуются данные, после него.

Замечание: Синтаксический разбор INI-файла
Zend_Config_Ini использует функцию PHP » parse_ini_file(). Пожалуйста, прочитайте документацию, чтобы получить представление об особенностях ее поведения, которые распространяются и на Zend_Config_Ini — например, о том, как обрабатываются специальные значения "TRUE", "FALSE", "yes", "no" и "NULL".

Замечание: Разделитель ключей
По умолчанию разделителем ключей является символ точки ("."). Он может быть заменен на любой другой путем изменения ключа 'nestSeparator' в массиве $options при создании объекта Zend_Config_Ini. Например:

  1. $options['nestSeparator'] = ':';
  2. $config = new Zend_Config_Ini('/path/to/config.ini',
  3.                               'staging',
  4.                               $options);

Пример #1 Использование Zend_Config_Ini

Данный пример демонстрирует использование Zend_Config_Ini для загрузки конфигурационных данных из файла INI. В этом примере используются конфигурационные данные для производственной и промежуточной систем. Поскольку конфигурационные данные для промежуточной и производственной систем в основном одни и те же, то "промежуточный" (staging) раздел наследует от "производственного" (production) раздела. В данном случае выбор произвольный, т.е. может быть и наоборот — "производственный" раздел наследует от "промежуточного", хотя это может не подходить в более сложных случаях. Допустим, конфигурационные данные находятся в файле /path/to/config.ini:

  1. ; Конфигурационные данные производственного сайта
  2. [production]
  3. webhost                  = www.example.com
  4. database.adapter         = pdo_mysql
  5. database.params.host     = db.example.com
  6. database.params.username = dbuser
  7. database.params.password = secret
  8. database.params.dbname   = dbname
  9.  
  10. ; Конфигурационные данные промежуточного сайта наследуются от
  11. ; данных производственного и подменяют их при необходимости.
  12. [staging : production]
  13. database.params.host     = dev.example.com
  14. database.params.username = devuser
  15. database.params.password = devsecret

Далее предположим, что разработчику приложения нужны "промежуточные" конфигурационные данные из файла INI. Загрузить эти данные, указав файл INI и нужный раздел, довольно просто:

  1. $config = new Zend_Config_Ini('/path/to/config.ini', 'staging');
  2.  
  3. echo $config->database->params->host;   // выведет "dev.example.com"
  4. echo $config->database->params->dbname; // выведет "dbname"

Замечание:

Параметры конструктора Zend_Config_Ini
Параметр Примечание
$filename INI-файл для загрузки
$section Раздел в INI-файле, который должен быть загружен. Установка этого параметра в NULL вызовет загрузку всех разделов. Также может быть передан массив имен разделов для загрузки нескольких разделов.
$options = false Массив опций. Поддерживаются следующие ключи:
  • allowModifications: Устанавливается в TRUE, чтобы разрешить последующую модификацию загруженного файла. По умолчанию установлен в FALSE

  • nestSeparator: Задает символ, используемый в качестве разделителя узлов. По умолчанию это "."


Теоретические основы работы с Zend_Config

Comments

not sure if this is deliberate
settings.status.live = true
on retrieving the value is string(1) "1"
settings.status.live = false
on retrieving the value is string(0) ""
Bonjour,

Petit bug dans cette classe, je m'explique, j'ai développé un client SOAP j'utilise la classe Zend ini pour pouvoir modifier les différents paramêtres pour le SOAP, simplement si vous mettez des masque de bit (bitmask) en l'occurence ceux du SOAP : SOAP_SINGLE_ELEMENT_ARRAYS, SOAP_USE_XSI_ARRAY_TYPE et, SOAP_WAIT_ONE_WAY_CALLS qui sont les features du SOAP cela ne marche pas il interprete surment les faite que se soit une string... il faut le faire en dur de cette façon : setOption(array('features' => SOAP_SINGLE_ELEMENT_ARRAYS)) cette méthode marche.

a plus !
Раз уже пишут на неанглийском, то надо и русский попиарить! Всем привет!
Я люблю Зенд Фреймворк!
ПС. Это не пиар.
а че, модером не проверяется чоли....

то печалька....
Модер не русский, думает что мы по делу наверное)
Hi,

wie genau gebe ich denn den Pfad zu der Ini-Datei an? Wenn ich z. B. im View in der Datei "application/views/scripts/index/index.phtml" den Eintrag "meta.description" ausgeben möchte?

+ Add A Comment

Please do not report issues via comments; use the ZF Issue Tracker.

If you have a JIRA/Crowd account, we suggest you login first before commenting.

  • BBCode is allowed in the comment markup

  • Select a Version

    Languages Available

    Components

    Search the Manual