1 <?xml version="1.0" encoding="UTF-8"?>
3 <!-- EN-Revision: 21130 -->
4 <sect1 id="zend.config.adapters.ini">
5 <title>Zend_Config_Ini</title>
8 <classname>Zend_Config_Ini</classname> は、おなじみの <acronym>INI</acronym>
9 形式のファイルに保存された設定データを、<classname>Zend_Config</classname>
10 を通じてオブジェクトのプロパティとして扱えるようにします。
11 この <acronym>INI</acronym> 形式は、階層化された設定データを扱うこと、
12 そしてセクション間の継承関係を扱うことに特化されています。
13 設定データの階層構造は、キーの名前をドットあるいはピリオド
14 (<emphasis>.</emphasis>) で区切ることによって表現します。
16 セクション名に続けてコロン (<emphasis>:</emphasis>) を、
17 そしてその後に継承元のセクション名を指定することで表します。
21 <title>INI ファイルのパース</title>
24 <classname>Zend_Config_Ini</classname> は、<acronym>PHP</acronym> の
25 <ulink url="http://php.net/parse_ini_file"><methodname>parse_ini_file()</methodname></ulink>
26 関数を使用しています。このドキュメントでは、<classname>Zend_Config_Ini</classname>
27 固有の挙動に注意しましょう。例えば、特殊な値として
28 "<constant>TRUE</constant>" や "<constant>FALSE</constant>"、
29 "yes"、"no" そして "<constant>NULL</constant>"
35 <title>キーの区切り文字</title>
38 デフォルトでは、キーの区切り文字はピリオド (<emphasis>.</emphasis>) です。
39 しかし、これは変更することもできます。変更するには、
40 <classname>Zend_Config_Ini</classname> オブジェクトの作成時に
41 <varname>$options</varname> のキー
42 <property>nestSeparator</property> を設定します。たとえばこのようになります。
45 <programlisting language="php"><![CDATA[
46 $options['nestSeparator'] = ':';
47 $config = new Zend_Config_Ini('/path/to/config.ini',
55 <example id="zend.config.adapters.ini.example.using">
56 <title>Zend_Config_Ini の使用法</title>
59 この例は、<classname>Zend_Config_Ini</classname> を使用して
60 <acronym>INI</acronym> ファイルから設定データを読み込むための基本的な方法を説明するものです。
61 この例では、運用環境の設定と開発環境の設定を両方管理しています。
62 開発環境用の設定データは運用環境用のものと非常に似ているので、
63 開発環境用のセクションは運用環境用のセクションを継承させています。
64 今回の場合なら、逆に運用環境用のセクションを開発環境用のものから継承させてもいいでしょう。
65 そうしたからといって特に状況が複雑になるわけではありません。
67 <filename>/path/to/config.ini</filename> に存在するものとします。
70 <programlisting language="ini"><![CDATA[
73 webhost = www.example.com
74 database.adapter = pdo_mysql
75 database.params.host = db.example.com
76 database.params.username = dbuser
77 database.params.password = secret
78 database.params.dbname = dbname
80 ; 開発環境の設定データは、運用環境のデータを継承したうえで
82 [staging : production]
83 database.params.host = dev.example.com
84 database.params.username = devuser
85 database.params.password = devsecret
90 次に、開発者が開発環境用の設定データを <acronym>INI</acronym> ファイルから読み込むことを考えます。
91 これは簡単なことで、単に <acronym>INI</acronym> ファイルとセクションを指定するだけです。
94 <programlisting language="php"><![CDATA[
95 $config = new Zend_Config_Ini('/path/to/config.ini', 'staging');
97 echo $config->database->params->host; // "dev.example.com" と出力します
98 echo $config->database->params->dbname; // "dbname" と出力します
104 <table id="zend.config.adapters.ini.table">
105 <title>Zend_Config_Ini コンストラクタのパラメータ</title>
115 <entry><varname>$filename</varname></entry>
116 <entry>読み込む <acronym>INI</acronym> ファイル。</entry>
119 <entry><varname>$section</varname></entry>
121 ini ファイルの中の、読み込む [section]。
122 このパラメータを <constant>NULL</constant> にすると、
124 また、セクション名の配列を指定すると、複数のセクションを読み込みます。
128 <entry><varname>$options</varname> (デフォルトは <constant>FALSE</constant>)</entry>
129 <entry>オプションの配列。以下のキーをサポートしています。
133 <emphasis><property>allowModifications</property></emphasis>:
134 <constant>TRUE</constant> を指定すると、
135 読み込んだ設定データをインメモリで後で変更できます。
136 デフォルトは <constant>FALSE</constant> です。
141 <emphasis><property>nestSeparator</property></emphasis>:
142 ネストの区切り文字として使用する文字を設定します。