В предлагаемом материале рассмотрен класс Zend_Config и три класса-помощника для чтения данных из файлов различных форматов: Zend_Config_Array, Zend_Config_Ini и Zend_Config_Xml,
а также приведены примеры использования каждого из них.
Обзор
Класс Zend_Config предназначен для облегчения работы с конфигурационными данными для веб приложений. Этот класс предлагает интерфейс для чтения иерархически организованных данных. Поддерживаются несколько различных форматов хранения данных, а именно: PHP массив,
.ini файл и формат XML. Для работы с каждым из перечисленных форматов существкет свой класс-помощник (Zend_Config_Array, Zend_Config_Ini и Zend_Config_Xml соответственно).
Любопытной возможностью, расширяющей традиционную для данной задачи функциональность, является поддержка наследования: данные из одной секции конфигурационного файла могут наследоваться
другой секцией. Однако, унаследовать данные каждая секция может лишь от одной родительской секции.
Класс Zend_Config использует интерфейсы Countable и Iterator для более удобного доступа к данным, которые представлены в виде ассоциативного массива.
Следует иметь в виду, что главное предназначение класса - именно чтение конфигурационных данных. Впрочем, считанные
данные могут быть подвергнуты модификации, но только в памяти; механизм обратной записи данных в настоящее время не поддерживается.
При необходимости класс Zend_Config может быть расширен.
Класс Zend_Config_Array
Класс Zend_Config_Array позволяет разработчикам загружать многомерные
ассоциативные массивы с конфигурационными данными.
Внимание
Массив с конфигурационными данными должен называться $config.
Для чтения массива
с конфигурационными данными класс Zend_Config использует метод load() класса-помощника Zend_Config_Array.
Пример 11.1. Использование класса Zend_Config_Array
<?php
$config = new Zend_Config(Zend_Config_Array::load('/path/to/config.php', 'barSection'));
echo $config->foo, $config->bar;
FooBar
Замечание
Данные, считанные из PHP массива, сохраняют свой тип.
Класс Zend_Config_Ini
Класс Zend_Config_Ini позволяет считывать данные из .ini файла. При этом используется стандартная функция PHPparse_ini_file(), поэтому файл должен следовать принятым для этой функции соглашениям.
Наследование данных
поддерживается при помощи ключевого слова extends, имеющего значение, совпадающее с названием родительской секции.
Пример 11.2. Использование класса Zend_Config_Ini
; config.ini
[fooSection]
foo = Foo
[barSection]
extends = fooSection ; inheritance
bar = Bar
<?php
$config = new Zend_Config(Zend_Config_Ini::load('/path/to/config.ini', 'barSection'));
echo $config->foo, $config->bar;
FooBar
Класс Zend_Config_Xml
Класс Zend_Config_Xml помогает считывать данные из файла в формате XML, с корневым элементом <config>.
Наследование данных поддерживается при помощи
атрибута extends, имеющего значение, совпадающее с названием родительской секции.
<?php
$config = new Zend_Config(Zend_Config_Xml::load('/path/to/config.xml', 'barSection'));
echo $config->foo, $config->bar;
FooBar
Замечание
Все данные, считанные из XML файла, имеют строковый тип.
Контрольные вопросы и задания
Предложите способ доступа к конфигурационным данным для соединения с базой данных в файле config.php, расположенному в той же директории, что и рабочий скрипт.