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()"). Для того, чтобы указать, от какого раздела наследует другой, вызывайте метод setExtend() в корне объекта Zend_Config. Использование Zend_Config_Writer Этот пример демонстрирует использование Zend_Config_Writer_Xml для создания нового конфигурационного файла: 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) разделами, в котором первый раздел наследует от второго. Изменение существующего конфигурационного файла Этот пример демонстрирует редактирование существующего конфигурационного файла. true, 'allowModifications' => true)); // Изменение значения $config->production->hostname = 'foobar'; // Сохранение $writer = new Zend_Config_Writer_Ini(array('config' => $config, 'filename' => 'config.ini')); $writer->write(); ]]> Загрузка конфигурационного файла При загрузке существующего файла для последующих изменений важно загрузить все разделы с пропуском расширений с тем, чтобы значения не объединялись. Это достигается путем передачи опции skipExtends конструктору.