Programmer's Reference Guide
| Zend_Config_Writer |
Zend_Config_Writer
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();). Для того, чтобы
указать, от какого раздела наследует другой, вызывайте метод в корне
объекта Zend_Config.
Пример #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) разделами, в котором первый раздел наследует от второго.
Пример #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конструктору.
| Zend_Config_Writer |
