5.2. Основы работы
Пред. | Глава 5. Zend_Config | След.

## 5.2. Основы работы

Конфигурационные данные передаются конструктору `Zend_Config` в виде ассоциативного массива, который может быть многомерным, что дает возможность организовывать данные от общего к частному. Классы адаптеров предназначены для того, чтобы преобразовать конфигурационные данные из хранилища в ассоциативный массив для конструктора `Zend_Config`. Пользовательские скрипты могут также передавать массивы непосредственно конструктору `Zend_Config` без использования класса адаптера, так как это может быть наиболее подходящим решением в определенных ситуациях.

`Zend_Config` реализует интерфейсы `Countable` и `Iterator` для того, чтобы обеспечить простой доступ к конфигурационным данным. Поэтому применительно к объектам `Zend_Config` можно использовать функцию `count()` и такие конструкции языка PHP, как `foreach`.

По умолчанию через `Zend_Config` конфигурационные данные доступны только для чтения, и операция присваивания (например, `$config->database->host = 'example.com'`) вызовет исключение. Это поведение, принятое по умолчанию, может быть отменено при вызове конструктора и тогда можно будет изменять конфигурационные данные.

| Замечание
Важно не путать изменение данных в памяти с сохранением конфигурационных данных на физическом носителе данных. Инструменты для создания и изменения конфигурационных данных для различных носителей данных не входят в сферу назначений `Zend_Config`. Для этих целей доступны продукты сторонних разработчиков с открытым исходным кодом к различным носителям информации.

Классы адаптеров наследуют от класса `Zend_Config`, и, следовательно, имеют тот же функционал.

Семейство классов `Zend_Config` дает возможность организовывать конфигурационные данные, разбивая их на разделы. В объекты адаптеров `Zend_Config` может быть загружен один определенный раздел, несколько разделов или все разделы данных (если не указан ни один раздел).

Классы адаптеров `Zend_Config` поддерживают единую модель наследования, которая позволяет одному разделу наследовать конфигурационные данные из другого. Это сделано для того, чтобы уменьшить или устранить необходимость дублирования конфигурационных данных разного назначения. Наследующий раздел может замещать данные, унаследованные от родительского раздела. Как и при наследовании классов PHP, раздел может наследовать от родительского раздела, который в свою очередь наследует от другого и т.д., но множественное наследование (т.е. раздел C наследует напрямую от разделов A и B) не поддерживается.

Пред. | Уровень выше | След.
Глава 5. Zend_Config | Начало | 5.3. Zend_Config_Ini