Содержание


Принцип работы


Принцип работы, Theory of Operation, ЗФ2, Zend Framework 2, ZF2



 

Если конфигурационными данными выступает ассоциативный массив, то они  могут быть легко доступны через конструктор Zend\Config\Config. Массив может быть многомерным. Поэтому данные могут быть упорядочены от общего к частному, или проще говоря – сгруппированы. Классы различных адаптеров превращают данные, хранимые в различных форматах в ассоциативный массив и передают их в конструктор Zend\Config\Config. При необходимости, пользовательские скрипты так же могут напрямую передавать необходимые массивы непосредственно в конструктор Zend\Config\Config без использования адаптеров.

 

Каждое значение массива становится свойствами объекта Zend\Config\Config. Ключом выступает имя свойства. Если же значение является массивом, то свойство объекта создается как новый объект Zend\Config\Config и в него снова передается соответствующий массив. Описанный выше процесс организован рекурсивно, поэтому нет никаких ограничений на количество уровней вложенности.

 

Для простоты доступа к данным так же реализованы Счетный и Итераторный интерфейсы. Таким образом, в объекте Zend\Config\Config есть функция count() и поддержка PHP конструкции foreach.

 

По умолчанию, конфигурационные данные в Zend\Config\Config доступны только для чтения и назначения результатов в исключения ($config->database->host = 'example.com';). Для изменения данных необходимо использовать конструктор. После разрешения изменения данных в Zend\Config\Config появляется возможность удаления значений (unset($config->database->host)). Для проверки, включена ли возможность изменения данных можно использовать метод isReadOnly(), а для отключения этой возможности воспользоваться методом setReadOnly().

 

Важно: Изменения конфигурационных данных не сохраняет их значения.

Инструменты для создания и изменения конфигурационных данных для различных носителей не относятся к Zend\Config\Config! Для этих целей можно использовать третьестепенные скрипты.

 

При использовании двух объектов Zend\Config\Config возможно объединение их в один с помощью функции merge(). Например, есть $config и $localConfig.  Для передачи данных из $localConfigв $config: $config->merge($localConfig); Но учтите, что при совпадении имен, данные из $localConfig перезапишут те, что уже есть в $config.

 

Важно: Объект Zend\Config\Config который проводит слияние должен быть с включенной возможностью изменения данных. Это достигается путем передачи в конструктор объекта второго параметра «TRUE». Метод setReadOnly() может использоваться для предотвращения дальнейшей модификации данных после слияния.


Автор статьи: DuB