Главная / Zend Manual Core
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()"). Для того, чтобы указать, от какого раздела наследует другой, вызывайте метод setExtend() в корне объекта Zend_Config.

Example #1 Использование Zend_Config_Writer

Этот пример демонстрирует использование Zend_Config_Writer_Xml для создания нового конфигурационного файла:

  1. // Создание объекта конфигурации
  2. $config = new Zend_Config(array(), true);
  3. $config->production = array();
  4. $config->staging    = array();
  5.  
  6. $config->setExtend('staging', 'production');
  7.  
  8. $config->production->db = array();
  9. $config->production->db->hostname = 'localhost';
  10. $config->production->db->username = 'production';
  11.  
  12. $config->staging->db = array();
  13. $config->staging->db->username = 'staging';
  14.  
  15. // Вы можете записать конфигурационный файл одним из следующих способов:
  16. // а)
  17. $writer = new Zend_Config_Writer_Xml(array('config'   => $config,
  18.                                            'filename' => 'config.xml'));
  19. $writer->write();
  20.  
  21. // б)
  22. $writer = new Zend_Config_Writer_Xml();
  23. $writer->setConfig($config)
  24.        ->setFilename('config.xml')
  25.        ->write();
  26.  
  27. // в)
  28. $writer = new Zend_Config_Writer_Xml();
  29. $writer->write('config.xml', $config);

В этом примере создается конфигурационный XML-файл с "промежуточным" (staging) и "производственным" (production) разделами, в котором первый раздел наследует от второго.

Example #2 Изменение существующего конфигурационного файла

Этот пример демонстрирует редактирование существующего конфигурационного файла.

  1. // Загрузка всех разделов из существующего конфигурационного файла с
  2. // пропуском "расширений"
  3. $config = new Zend_Config_Ini('config.ini',
  4.                               null,
  5.                               array('skipExtends'        => true,
  6.                                     'allowModifications' => true));
  7.  
  8. // Изменение значения
  9. $config->production->hostname = 'foobar';
  10.  
  11. // Сохранение
  12. $writer = new Zend_Config_Writer_Ini(array('config'   => $config,
  13.                                            'filename' => 'config.ini'));
  14. $writer->write();

Note: Загрузка конфигурационного файла
При загрузке существующего файла для последующих изменений важно загрузить все разделы с пропуском расширений с тем, чтобы значения не объединялись. Это достигается путем передачи опции skipExtends конструктору.


Zend_Config_Writer