<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 14978 -->
<!-- Reviewed: no -->
<sect1 id="zend.config.adapters.ini">
    <title>Zend_Config_Ini</title>
    <para>
        <classname>Zend_Config_Ini</classname> ermöglicht es Entwicklern, Konfigurations-Daten in einem
        vertrauten INI-Format zu speichern und sie mit einer Syntax auszulesen, die dem Zugriff auf
        die Eigenschaften verschachtelter Objekte entspricht. Das verwendete INI-Format bietet
        einerseits die Möglichkeit, Konfigurations-Daten hierarchisch abzulegen und andererseits
        Vererbung zwischen Sektionen zu spezifizieren. Konfigurations-Daten-Hierarchien werden
        durch das Trennen der Schlüsselwörter durch einen Punkt (<code>.</code>). Eine Sektion kann
        eine andere Sektion erweitern oder beerben indem man nach dem Sektionsname einen
        Doppelpunkt (<code>:</code>) notiert, gefolgt vom Namen der zu beerbenden Sektion.
    </para>
    <note>
        <title>Die Ini Datei parsen</title>
        <para>
            <classname>Zend_Config_Ini</classname> verwendet die PHP-Funktion
            <ulink url="http://php.net/parse_ini_file"><code>parse_ini_file()</code></ulink>. Deren
            Dokumentation klärt über spezielle Verhaltensweisen auf, die sich auch auf
            <classname>Zend_Config_Ini</classname> auswirken, z. B. wie die besonderen Werte
            <code>true</code>, <code>false</code>, <code>yes</code>, <code>no</code> und
            <code>null</code> gehandhabt werden.
        </para>
    </note>
    <note>
        <title>Schlüssel Trenner</title>
        <para>
            Standardmäßig ist das Schlüssel Trennzeichen der Punkt (<code>.</code>). Dies kann
            geändert werden, indem der <code>$options</code> Schlüssel <code>'nestSeparator'</code>
            geändert wird, wenn das <classname>Zend_Config_Ini</classname> Objekt instanziert wird. Zum
            Beispiel:
            <programlisting role="php"><![CDATA[
$options['nestSeparator'] = ':';
$config = new Zend_Config_Ini('/path/to/config.ini',
                              'staging',
                              $options);
]]>
            </programlisting>
        </para>
    </note>
    <example id="zend.config.adapters.ini.example.using">
        <title><classname>Zend_Config_Ini</classname> benutzen</title>
        <para>
            Dieses Beispiel zeigt die grundlegende Nutzung von <classname>Zend_Config_Ini</classname> um
            Konfigurations-Daten aus einem XML-File zu laden. In diesem Beispiel gibt es
            Konfigurations-Daten für ein Produktiv- und ein Staging-System. Da sich die Daten für
            das Staging-System nur unwesentlich von denen für das Produktiv-System unterscheiden,
            erbt das Staging-System vom Produktiv-System. In diesem Fall ist die Entscheidung
            darüber, welche Sektion von welcher erben soll, willkürlich und es könnte auch anders
            herum gemacht werden. In komplexeren Fällen ist das möglicherweise nicht der Fall.
            Nehmen wir also an, dass sich die folgenden Konfigurations-Daten in der Datei
            <code>/path/to/config.ini</code> befinden:
        </para>
        <programlisting role="ini"><![CDATA[
; Konfigurations-Daten für die Produktiv-Site
[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

; Konfigurations-Daten für die Staging-Site, erbt von der Produktion
; und überschreibt Werte, wo nötig
[staging : production]
database.params.host     = dev.example.com
database.params.username = devuser
database.params.password = devsecret
]]>
        </programlisting>
        <para>
            Nehmen wir weiterhin an, dass der Anwendungs-Entwickler die Staging-Konfiguration aus
            diesem INI-File benötigt. Es ist ein Leichtes, diese Daten zu laden, es muss nur das
            INI-File und die Staging-Sektion spezifiziert werden:
        </para>
        <programlisting role="php"><![CDATA[
$config = new Zend_Config_Ini('/path/to/config.ini', 'staging');

echo $config->database->params->host;   // Ausgabe "dev.example.com"
echo $config->database->params->dbname; // Ausgabe "dbname"
]]>
        </programlisting>
    </example>
    <note>
    <table id="zend.config.adapters.ini.table">
        <title>Zend_Config_Ini Kontruktor Parameter</title>
        <tgroup cols="2">
            <thead>
                  <row>
                    <entry>Parameter</entry>
                    <entry>Notizen</entry>
                </row>
            </thead>
            <tbody>
                <row>
                    <entry><code>$filename</code></entry>
                    <entry>The INI Datei die geladen wird.</entry>
                </row>
                <row>
                    <entry><code>$section</code></entry>
                    <entry>Die [section] innerhalb der ini Datei die geladen wird. Das Setzen dieses Parameters
                    auf null lädt alle Sektionen. Alternativ, kann ein Array von Sektionsnamen übergeben werden um
                    mehrere Sektionen zu laden.</entry>
                </row>
                <row>
                    <entry><code>$options = false</code></entry>
                    <entry>Options Array. Die folgenden Schlüssel werden unterstützt:
                        <itemizedlist>
                            <listitem>
                                <para>
                                    <emphasis>allowModifications</emphasis>: Auf true gesetzt erlaubt es
                                    weiterführende Modifikationen der geladenen Datei. Standardmäßig auf false
                                    gestellt
                                </para>
                            </listitem>
                            <listitem>
                                <para>
                                    <emphasis>nestSeparator</emphasis>: Auf das Zeichen zu setzen das als Abschnitts
                                    Separator verwendet wird. Standardmäßig auf "." gestellt
                                </para>
                            </listitem>
                        </itemizedlist>
                    </entry>
                </row>
            </tbody>
        </tgroup>
    </table>
    </note>
</sect1>
<!--
vim:se ts=4 sw=4 et:
-->