[GENERIC] Zend_Translate:
[zend.git] / documentation / manual / ja / module_specs / Zend_Config_Writer.xml
blob3960bcc4beaa609596277d68e3ceba8bc182b346
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Reviewed: no -->
3 <!-- EN-Revision: 20765 -->
4 <sect1 id="zend.config.writer.introduction">
5     <title>Zend_Config_Writer</title>
7     <para>
8         <classname>Zend_Config_Writer</classname> は、設定ファイルに
9         <classname>Zend_Config</classname> オブジェクトを書き出します。
10         アダプタなしでも動作するので、使用するのも簡単です。
11         デフォルトでは <classname>Zend_Config_Writer</classname>
12         には 3 種類のアダプタが同梱されており、全てファイル・ベースです。
13         まず、<emphasis>filename</emphasis> や <emphasis>config</emphasis>
14         のオプションを指定してライターのインスタンスを作成します。
15         それからライターの <methodname>write()</methodname> メソッドをコールすると、
16         設定ファイルが作成されます。<varname>$filename</varname> や
17         <varname>$config</varname> を、直接 <methodname>write()</methodname>
18         メソッドで設定することもできます。現在は、次のライターが
19         <classname>Zend_Config_Writer</classname> に同梱されています。
20     </para>
22     <itemizedlist>
23         <listitem>
24             <para>
25                 <classname>Zend_Config_Writer_Array</classname>
26             </para>
27         </listitem>
29         <listitem>
30             <para>
31                 <classname>Zend_Config_Writer_Ini</classname>
32             </para>
33         </listitem>
35         <listitem>
36             <para>
37                 <classname>Zend_Config_Writer_Xml</classname>
38             </para>
39         </listitem>
40     </itemizedlist>
42      <para>
43         <acronym>INI</acronym> ライターでは、セクションについてのレンダリング用のモードが2つあります。
44         既定では、トップレベルの構成節は、常にセクション名に含まれます。
45         <command>$writer->setRenderWithoutSections()</command> を呼ぶことにより、
46         オプションの全てが <acronym>INI</acronym> ファイルのグローバル名前空間に含まれます。
47         そして、セクションは使用されません。
48     </para>
50     <para>
51         加えて、<classname>Zend_Config_Writer_Ini</classname> にはオプションのパラメータ
52         <emphasis>nestSeparator</emphasis> が用意されています。
53         これは、ノードを区切る文字を定義します。デフォルトはドットひとつで、
54         これは <classname>Zend_Config_Ini</classname> のデフォルトと同じです。
55     </para>
57     <para>
58         <classname>Zend_Config</classname> オブジェクトを変更したり作成したりする際には、
59         知っておくべきことがあります。値を作成したり変更したりするには、
60         パラメータのアクセサ (<emphasis>-&gt;</emphasis>) で <classname>Zend_Config</classname>
61         オブジェクトのパラメータを設定します。
62         ルート内のセクションやブランチを作成するには、新規配列を作成します
63         ("<command>$config-&gt;branch = array();</command>")。
64         セクションの継承関係を定義するには、ルート
65         <classname>Zend_Config</classname> オブジェクトの
66         <methodname>setExtend()</methodname> メソッドをコールします。
67     </para>
69     <example id="zend.config.writer.example.using">
70         <title>Zend_Config_Writer の使用法</title>
72         <para>
73             この例では、<classname>Zend_Config_Writer_Xml</classname>
74             で新しい設定ファイルを作成する方法を説明します。
75         </para>
77         <programlisting language="php"><![CDATA[
78 // config オブジェクトを作成します
79 $config = new Zend_Config(array(), true);
80 $config->production = array();
81 $config->staging    = array();
83 $config->setExtend('staging', 'production');
85 $config->production->db = array();
86 $config->production->db->hostname = 'localhost';
87 $config->production->db->username = 'production';
89 $config->staging->db = array();
90 $config->staging->db->username = 'staging';
92 // 次のいずれかの方法で設定ファイルを書き出します
93 // a)
94 $writer = new Zend_Config_Writer_Xml(array('config'   => $config,
95                                            'filename' => 'config.xml'));
96 $writer->write();
98 // b)
99 $writer = new Zend_Config_Writer_Xml();
100 $writer->setConfig($config)
101        ->setFilename('config.xml')
102        ->write();
104 // c)
105 $writer = new Zend_Config_Writer_Xml();
106 $writer->write('config.xml', $config);
107 ]]></programlisting>
109         <para>
110             これは、production と staging というセクションを持つ <acronym>XML</acronym>
111             設定ファイルを作成します。staging は production を継承しています。
112         </para>
113     </example>
115     <example id="zend.config.writer.modifying">
116         <title>既存の設定の変更</title>
118         <para>
119             この例では、既存の設定ファイルを編集する方法を説明します。
120         </para>
122         <programlisting language="php"><![CDATA[
123 // すべてのセクションを既存の設定ファイルから読み込みますが継承は読み飛ばします
124 $config = new Zend_Config_Ini('config.ini',
125                               null,
126                               array('skipExtends'        => true,
127                                     'allowModifications' => true));
129 // 値を変更します
130 $config->production->hostname = 'foobar';
132 // 設定ファイルを書き出します
133 $writer = new Zend_Config_Writer_Ini(array('config'   => $config,
134                                            'filename' => 'config.ini'));
135 $writer->write();
136 ]]></programlisting>
137     </example>
139     <note>
140         <title>設定ファイルの読み込み</title>
141         <para>
142             既存の設定ファイルを読み込んで変更をする場合は、
143             すべてのセクションを読み込んで継承を読み飛ばすことが大切です。
144             そうすることで、値がマージされてしまうことがなくなります。
145             そのために、コンストラクタで
146             <emphasis>skipExtends</emphasis> オプションを指定します。
147         </para>
148     </note>
150     <para>
151         構成節の文字列を作成するために、ファイル・ベースのライタ
152         ( <acronym>INI</acronym> 、 <acronym>XML</acronym> 及び <acronym>PHP</acronym> 配列)
153         全てで内部的に <methodname>render()</methodname> が使用されます。
154         コンフィギュレーション・データの文字列表現にアクセスする必要があれば、
155         このメソッドを外部からも使用できます。
156     </para>
158 </sect1>
159 <!--
160 vim:se ts=4 sw=4 et: