| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 21823 -->
- <!-- 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
- <acronym>INI</acronym>
- Format zu speichern und sie mit einer Syntax
- auszulesen, die dem Zugriff auf die Eigenschaften verschachtelter Objekte
- entspricht. Das
- verwendete
- <acronym>INI</acronym>
- 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 (
- <emphasis>.</emphasis>
- ). Eine Sektion kann eine andere
- Sektion erweitern oder beerben indem man nach dem Sektionsname einen
- Doppelpunkt
- (
- <emphasis>:</emphasis>
- ) notiert, gefolgt vom Namen der zu beerbenden Sektion.
- </para>
- <note>
- <title>Die Ini Datei parsen</title>
- <para>
- <classname>Zend_Config_Ini</classname>
- verwendet die
- <acronym>PHP</acronym>
- Funktion
- <ulink url="http://php.net/parse_ini_file">
- <methodname>parse_ini_file()</methodname>
- </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
- "
- <constant>TRUE</constant>
- ", "
- <constant>FALSE</constant>
- ", "yes", "no" und
- "
- <constant>NULL</constant>
- " gehandhabt werden.
- </para>
- </note>
- <note>
- <title>Schlüssel Trenner</title>
- <para>
- Standardmäßig ist das Schlüssel Trennzeichen der Punkt (
- <emphasis>.</emphasis>
- ). Dies
- kann geändert werden, indem der
- <varname>$options</varname>
- Schlüssel
- <property>nestSeparator</property>
- geändert wird, wenn das
- <classname>Zend_Config_Ini</classname>
- Objekt instanziert wird.
- Zum Beispiel:
- </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 benutzen</title>
- <para>
- Dieses Beispiel zeigt die grundlegende Nutzung von
- <classname>Zend_Config_Ini</classname>
- um Konfigurations-Daten aus einer
- <acronym>INI</acronym>
- Datei 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
- <filename>/path/to/config.ini</filename>
- befinden:
- </para>
- <programlisting language="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
- dieser
- <acronym>INI</acronym>
- Datei benötigt. Es ist ein Leichtes, diese Daten zu laden,
- es muss nur die
- <acronym>INI</acronym>
- Datei und die Staging-Sektion spezifiziert
- werden:
- </para>
- <programlisting language="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>
- <varname>$filename</varname>
- </entry>
- <entry>
- Die
- <acronym>INI</acronym>
- Datei die geladen wird.
- </entry>
- </row>
- <row>
- <entry>
- <varname>$section</varname>
- </entry>
- <entry>
- Die [section] innerhalb der
- <acronym>INI</acronym>
- Datei die geladen
- wird. Das Setzen dieses Parameters auf
- <constant>NULL</constant>
- lädt
- alle Sektionen. Alternativ, kann ein Array von Sektionsnamen
- übergeben
- werden um mehrere Sektionen zu laden.
- </entry>
- </row>
- <row>
- <entry>
- <varname>$options</varname>
- (Default
- <constant>FALSE</constant>
- )
- </entry>
- <entry>
- Options Array. Die folgenden Schlüssel werden unterstützt:
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>
- <property>allowModifications</property>
- </emphasis>
- :
- Auf
- <constant>TRUE</constant>
- gesetzt erlaubt es
- weiterführende Modifikationen der geladenen
- Konfigurationsdaten im Speicher. Standardmäßig auf
- <constant>NULL</constant>
- gestellt
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>
- <property>nestSeparator</property>
- </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>
|