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' в $config при создании объекта Zend_Config_Ini. Например:

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

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

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

; Production site configuration data
[production]
webhost           = www.example.com
database.type     = pdo_mysql
database.host     = db.example.com
database.username = dbuser
database.password = secret
database.name     = dbname

; Staging site configuration data inherits from production and
; overrides values as necessary
[staging : production]
database.host     = dev.example.com
database.username = devuser
database.password = devsecret

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

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

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

echo $config->database->host; // выведет "dev.example.com"
echo $config->database->name; // выведет "dbname"
[Замечание] Замечание

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

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

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