Содержание
Zend_Config_Writer
позволяет создавать конфигурационные
файлы из объектов Zend_Config
.
Он работает и без использования адаптеров и, таким образом, очень прост
в использовании.
По умолчанию Zend_Config_Writer
поставляется с тремя
адаптерами, которые используются одинаково. Вы инстанцируете класс для
записи с опциями, которыми могут быть filename
(имя файла) и config (конфигурационные данные).
Затем вы вызываете метод write()
объекта, и он
создает конфигурационный файл. Вы можете также передавать
$filename
и $config
непосредственно
методу write()
. В настоящее время вместе с
Zend_Config_Writer
поставляются следующие адаптеры:
Zend_Config_Writer_Array
Zend_Config_Writer_Ini
Zend_Config_Writer_Xml
В качестве исключения Zend_Config_Writer_Ini
имеет
еще один опциональный параметр nestSeparator, через
который указывается символ-разделитель для узлов.
По умолчанию это точка, как и в Zend_Config_Ini
.
При изменении или создании объекта Zend_Config
следует знать следующее.
Для того, чтобы создать или изменить значение, устанавливайте
параметр объекта Zend_Config
через аксессор
(->). Для того, чтобы создать раздел в корне или
ветку, создавайте новый массив
("$config->branch = array()"). Для того, чтобы
указать, от какого раздела наследует другой, вызывайте метод
setExtend()
в корне объекта
Zend_Config
.
Пример 22.1. Использование Zend_Config_Writer
Этот пример демонстрирует использование
Zend_Config_Writer_Xml
для создания нового
конфигурационного файла:
// Создание объекта конфигурации
$config = new Zend_Config(array(), true);
$config->production = array();
$config->staging = array();
$config->setExtend('staging', 'production');
$config->production->db = array();
$config->production->db->hostname = 'localhost';
$config->production->db->username = 'production';
$config->staging->db = array();
$config->staging->db->username = 'staging';
// Вы можете записать конфигурационный файл одним из следующих способов:
// а)
$writer = new Zend_Config_Writer_Xml(array('config' => $config,
'filename' => 'config.xml'));
$writer->write();
// б)
$writer = new Zend_Config_Writer_Xml();
$writer->setConfig($config)
->setFilename('config.xml')
->write();
// в)
$writer = new Zend_Config_Writer_Xml();
$writer->write('config.xml', $config);
В этом примере создается конфигурационный XML-файл с "промежуточным" (staging) и "производственным" (production) разделами, в котором первый раздел наследует от второго.
Пример 22.2. Изменение существующего конфигурационного файла
Этот пример демонстрирует редактирование существующего конфигурационного файла.
// Загрузка всех разделов из существующего конфигурационного файла с
// пропуском "расширений"
$config = new Zend_Config_Ini('config.ini',
null,
array('skipExtends' => true,
'allowModifications' => true));
// Изменение значения
$config->production->hostname = 'foobar';
// Сохранение
$writer = new Zend_Config_Writer_Ini(array('config' => $config,
'filename' => 'config.ini'));
$writer->write();
![]() |
Загрузка конфигурационного файла |
---|---|
При загрузке существующего файла для последующих изменений важно загрузить все разделы с пропуском расширений с тем, чтобы значения не объединялись. Это достигается путем передачи опции skipExtends конструктору. |