# 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. Например:

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

Использование 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 и нужный раздел, довольно просто:

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

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

Параметры конструктора Zend_Config_Ini

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