<?xml version="1.0" encoding="UTF-8"?>
<!-- Reviewed: no -->
<!-- EN-Revision: 24249 -->
<sect1 id="zend.config.adapters.ini">
    <title>Zend_Config_Ini(日本語)</title>

    <para>
        <classname>Zend_Config_Ini</classname> は、おなじみの <acronym>INI</acronym>
        形式のファイルに保存された設定データを、<classname>Zend_Config</classname>
        を通じてオブジェクトのプロパティとして扱えるようにします。
        この <acronym>INI</acronym> 形式は、階層化された設定データを扱うこと、
        そしてセクション間の継承関係を扱うことに特化されています。
        設定データの階層構造は、キーの名前をドットあるいはピリオド
        (<emphasis>.</emphasis>) で区切ることによって表現します。
        他のセクションを拡張するなどの継承関係は、
        セクション名に続けてコロン (<emphasis>:</emphasis>) を、
        そしてその後に継承元のセクション名を指定することで表します。
    </para>

    <note>
        <title>INI ファイルのパース</title>

        <para>
            <classname>Zend_Config_Ini</classname> は、<acronym>PHP</acronym> の
            <ulink url="http://php.net/parse_ini_file"><methodname>parse_ini_file()</methodname></ulink>
            関数を使用しています。このドキュメントでは、<classname>Zend_Config_Ini</classname>
            固有の挙動に注意しましょう。例えば、特殊な値として
            "<constant>TRUE</constant>" や "<constant>FALSE</constant>"、
            "yes"、"no" そして "<constant>NULL</constant>"
            を処理できることなどです。
        </para>
    </note>

    <note>
        <title>キーの区切り文字</title>

        <para>
            デフォルトでは、キーの区切り文字はピリオド (<emphasis>.</emphasis>) です。
            しかし、これは変更することもできます。変更するには、
            <classname>Zend_Config_Ini</classname> オブジェクトの作成時に
            <varname>$options</varname> のキー
            <property>nestSeparator</property> を設定します。たとえばこのようになります。
        </para>

        <programlisting language="php"><![CDATA[
$options['nestSeparator'] = ':';
$config = new Zend_Config_Ini('/path/to/config.ini',
                              'staging',
                              $options);
]]>
            </programlisting>

    </note>

    <example id="zend.config.adapters.ini.example.using">
        <title>Zend_Config_Ini の使用法</title>

        <para>
            この例は、<classname>Zend_Config_Ini</classname> を使用して
            <acronym>INI</acronym> ファイルから設定データを読み込むための基本的な方法を説明するものです。
            この例では、運用環境の設定と開発環境の設定を両方管理しています。
            開発環境用の設定データは運用環境用のものと非常に似ているので、
            開発環境用のセクションは運用環境用のセクションを継承させています。
            今回の場合なら、逆に運用環境用のセクションを開発環境用のものから継承させてもいいでしょう。
            そうしたからといって特に状況が複雑になるわけではありません。
            ここでは、次のような内容の設定データが
            <filename>/path/to/config.ini</filename> に存在するものとします。
        </para>

        <programlisting language="ini"><![CDATA[
; 運用環境の設定データ
[production]
webhost                  = www.example.com
database.adapter         = pdo_mysql
database.params.host     = db.example.com
database.params.username = dbuser
database.params.password = secret
database.params.dbname   = dbname

; 開発環境の設定データは、運用環境のデータを継承したうえで
; 必要に応じて値を上書きします
[staging : production]
database.params.host     = dev.example.com
database.params.username = devuser
database.params.password = devsecret
]]>
</programlisting>

        <para>
            次に、開発者が開発環境用の設定データを <acronym>INI</acronym> ファイルから読み込むことを考えます。
            これは簡単なことで、単に <acronym>INI</acronym> ファイルとセクションを指定するだけです。
        </para>

        <programlisting language="php"><![CDATA[
$config = new Zend_Config_Ini('/path/to/config.ini', 'staging');

echo $config->database->params->host;   // "dev.example.com" と出力します
echo $config->database->params->dbname; // "dbname" と出力します
]]>
        </programlisting>
    </example>

    <note>
    <table id="zend.config.adapters.ini.table">
        <title>Zend_Config_Ini コンストラクタのパラメータ</title>
        <tgroup cols="2">
            <thead>
                  <row>
                    <entry>パラメータ</entry>
                    <entry>説明</entry>
                </row>
            </thead>
            <tbody>
                <row>
                    <entry><varname>$filename</varname></entry>
                    <entry>読み込む <acronym>INI</acronym> ファイル。</entry>
                </row>
                <row>
                    <entry><varname>$section</varname></entry>
                    <entry>
                        <acronym>INI</acronym> ファイル内で読み込む [section]。
                        このパラメータを <constant>NULL</constant> にすると、
                        すべてのセクションを読み込みます。
                        また、セクション名の配列を指定すると、複数のセクションを読み込みます。
                    </entry>
                </row>
                <row>
                    <entry><varname>$options</varname> (デフォルトは <constant>FALSE</constant>)</entry>
                    <entry>オプションの配列。以下のキーをサポートしています。
                        <itemizedlist>
                            <listitem>
                                <para>
                                    <emphasis><property>allowModifications</property></emphasis>:
                                    <constant>TRUE</constant> を指定すると、
                                    読み込んだ設定データをインメモリで後で変更できます。
                                    デフォルトは <constant>FALSE</constant> です。
                                </para>
                            </listitem>
                            <listitem>
                                <para>
                                    <emphasis><property>nestSeparator</property></emphasis>:
                                    ネストの区切り文字として使用する文字を設定します。
                                    デフォルトは "." です。
                                </para>
                            </listitem>
                        </itemizedlist>
                    </entry>
                </row>
            </tbody>
        </tgroup>
    </table>
    </note>
</sect1>
<!--
vim:se ts=4 sw=4 et:
-->
