<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 15207 -->
<!-- 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>Zend_Config_Ini 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:
-->