[MANUAL] English:
[zend.git] / documentation / manual / ru / module_specs / Zend_Config_Writer.xml
blob598979dd704f2ffcd2913ebe4b697f1bebaa4341
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Reviewed: no -->
3 <sect1 id="zend.config.writer.introduction">
4     <title>Zend_Config_Writer</title>
5     <para>
6         <classname>Zend_Config_Writer</classname> позволяет создавать конфигурационные
7         файлы из объектов <classname>Zend_Config</classname>.
8         Он работает и без использования адаптеров и, таким образом, очень прост
9         в использовании.
10         По умолчанию <classname>Zend_Config_Writer</classname> поставляется с тремя
11         адаптерами, которые используются одинаково. Вы инстанцируете класс для
12         записи с опциями, которыми могут быть <emphasis>filename</emphasis>
13         (имя файла) и <emphasis>config</emphasis> (конфигурационные данные).
14         Затем вы вызываете метод <methodname>write()</methodname> объекта, и он
15         создает конфигурационный файл. Вы можете также передавать
16         <varname>$filename</varname> и <varname>$config</varname> непосредственно
17         методу <methodname>write()</methodname>. В настоящее время вместе с
18         <classname>Zend_Config_Writer</classname> поставляются следующие адаптеры:
19     </para>
21     <itemizedlist>
22         <listitem>
23             <para>
24                 <classname>Zend_Config_Writer_Array</classname>
25             </para>
26         </listitem>
27         <listitem>
28             <para>
29                 <classname>Zend_Config_Writer_Ini</classname>
30             </para>
31         </listitem>
32         <listitem>
33             <para>
34                 <classname>Zend_Config_Writer_Xml</classname>
35             </para>
36         </listitem>
37     </itemizedlist>
39     <para>
40         В качестве исключения <classname>Zend_Config_Writer_Ini</classname> имеет
41         еще один опциональный параметр <emphasis>nestSeparator</emphasis>, через
42         который указывается символ-разделитель для узлов.
43         По умолчанию это точка, как и в <classname>Zend_Config_Ini</classname>.
44     </para>
46     <para>
47         При изменении или создании объекта <classname>Zend_Config</classname>
48         следует знать следующее.
49         Для того, чтобы создать или изменить значение, устанавливайте
50         параметр объекта <classname>Zend_Config</classname> через аксессор
51         (<emphasis>-&gt;</emphasis>). Для того, чтобы создать раздел в корне или
52         ветку, создавайте новый массив
53         ("<command>$config-&gt;branch = array()</command>"). Для того, чтобы
54         указать, от какого раздела наследует другой, вызывайте метод
55         <methodname>setExtend()</methodname> в корне объекта
56         <classname>Zend_Config</classname>.
57     </para>
59     <example id="zend.config.writer.example.using">
60         <title>Использование Zend_Config_Writer</title>
61         <para>
62             Этот пример демонстрирует использование
63             <classname>Zend_Config_Writer_Xml</classname> для создания нового
64             конфигурационного файла:
65         </para>
66         <programlisting language="php"><![CDATA[
67 // Создание объекта конфигурации
68 $config = new Zend_Config(array(), true);
69 $config->production = array();
70 $config->staging    = array();
72 $config->setExtend('staging', 'production');
74 $config->production->db = array();
75 $config->production->db->hostname = 'localhost';
76 $config->production->db->username = 'production';
78 $config->staging->db = array();
79 $config->staging->db->username = 'staging';
81 // Вы можете записать конфигурационный файл одним из следующих способов:
82 // а)
83 $writer = new Zend_Config_Writer_Xml(array('config'   => $config,
84                                            'filename' => 'config.xml'));
85 $writer->write();
87 // б)
88 $writer = new Zend_Config_Writer_Xml();
89 $writer->setConfig($config)
90        ->setFilename('config.xml')
91        ->write();
93 // в)
94 $writer = new Zend_Config_Writer_Xml();
95 $writer->write('config.xml', $config);
96 ]]></programlisting>
97         <para>
98             В этом примере создается конфигурационный
99             <acronym>XML</acronym>-файл с "промежуточным" (staging) и
100             "производственным" (production) разделами, в котором первый
101             раздел наследует от второго.
102         </para>
103     </example>
105     <example id="zend.config.writer.modifying">
106         <title>Изменение существующего конфигурационного файла</title>
107         <para>
108             Этот пример демонстрирует редактирование существующего
109             конфигурационного файла.
110         </para>
111         <programlisting language="php"><![CDATA[
112 // Загрузка всех разделов из существующего конфигурационного файла с
113 // пропуском "расширений"
114 $config = new Zend_Config_Ini('config.ini',
115                               null,
116                               array('skipExtends'        => true,
117                                     'allowModifications' => true));
119 // Изменение значения
120 $config->production->hostname = 'foobar';
122 // Сохранение
123 $writer = new Zend_Config_Writer_Ini(array('config'   => $config,
124                                            'filename' => 'config.ini'));
125 $writer->write();
126 ]]></programlisting>
127     </example>
129     <note>
130         <title>Загрузка конфигурационного файла</title>
131         <para>
132             При загрузке существующего файла для последующих изменений
133             важно загрузить все
134             разделы с пропуском расширений с тем, чтобы значения не
135             объединялись. Это достигается путем передачи опции
136             <emphasis>skipExtends</emphasis> конструктору.
137         </para>
138     </note>
139 </sect1>
140 <!--
141 vim:se ts=4 sw=4 et: