5.3. Zend_Config_Ini

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

[Замечание] parse_ini_file

Zend_Config_Ini использует функцию PHP parse_ini_file(). Пожалуйста, почитайте документацию, чтобы получить представление об особенностях ее поведения, которые распространяются и на Zend_Config_Ini — например, о том, как обрабатываются специальные значения true, false, yes, no и null.

[Замечание] Разделитель ключей

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

<?php
require_once 'Zend/Config/Ini.php';
$options['nestSeparator'] = ':';
$config = new Zend_Config_Ini('/path/to/config.ini', 'staging', $options);
            

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

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

; Конфигурационные данные производственного сайта
[production]
webhost                  = www.example.com
database.adapter         = pdo_mysql
database.params.host     = db.example.com
database.params.username = dbuser
database.params.password = secret
database.params.dbname   = dbname

; Конфигурационные данные промежуточного сайта наследуются от конфигурационных
; данных производственного и подменяют их при необходимости.
[staging : production]
database.params.host     = dev.example.com
database.params.username = devuser
database.params.password = devsecret
        

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

<?php
require_once 'Zend/Config/Ini.php';

$config = new Zend_Config_Ini('/path/to/config.ini', 'staging');

echo $config->database->params->host;   // выведет "dev.example.com"
echo $config->database->params->dbname; // выведет "dbname"
        

[Замечание] Замечание

Таблица 5.1. Параметры конструктора Zend_Config_Ini

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

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


    Поддержать сайт на родительском проекте КГБ