Zend_Config_Ini.xml 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 17564 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.config.adapters.ini">
  5. <title>Zend_Config_Ini</title>
  6. <para>
  7. <classname>Zend_Config_Ini</classname> ermöglicht es Entwicklern, Konfigurations-Daten in
  8. einem vertrauten <acronym>INI</acronym> Format zu speichern und sie mit einer Syntax
  9. auszulesen, die dem Zugriff auf die Eigenschaften verschachtelter Objekte entspricht. Das
  10. verwendete <acronym>INI</acronym> Format bietet einerseits die Möglichkeit, Konfigurations
  11. Daten hierarchisch abzulegen und andererseits Vererbung zwischen Sektionen zu
  12. spezifizieren. Konfigurations-Daten-Hierarchien werden durch das Trennen der
  13. Schlüsselwörter durch einen Punkt (<emphasis>.</emphasis>). Eine Sektion kann eine andere
  14. Sektion erweitern oder beerben indem man nach dem Sektionsname einen Doppelpunkt
  15. (<emphasis>:</emphasis>) notiert, gefolgt vom Namen der zu beerbenden Sektion.
  16. </para>
  17. <note>
  18. <title>Die Ini Datei parsen</title>
  19. <para>
  20. <classname>Zend_Config_Ini</classname> verwendet die <acronym>PHP</acronym> Funktion <ulink
  21. url="http://php.net/parse_ini_file"><methodname>parse_ini_file()</methodname></ulink>.
  22. Deren Dokumentation klärt über spezielle Verhaltensweisen auf, die sich auch auf
  23. <classname>Zend_Config_Ini</classname> auswirken, z. B. wie die besonderen Werte
  24. "<constant>TRUE</constant>", "<constant>FALSE</constant>", "yes", "no" und
  25. "<constant>NULL</constant>" gehandhabt werden.
  26. </para>
  27. </note>
  28. <note>
  29. <title>Schlüssel Trenner</title>
  30. <para>
  31. Standardmäßig ist das Schlüssel Trennzeichen der Punkt (<emphasis>.</emphasis>). Dies
  32. kann geändert werden, indem der <varname>$options</varname> Schlüssel
  33. <property>nestSeparator</property> geändert wird, wenn das
  34. <classname>Zend_Config_Ini</classname> Objekt instanziert wird.
  35. Zum Beispiel:
  36. </para>
  37. <programlisting language="php"><![CDATA[
  38. $options['nestSeparator'] = ':';
  39. $config = new Zend_Config_Ini('/path/to/config.ini',
  40. 'staging',
  41. $options);
  42. ]]></programlisting>
  43. </note>
  44. <example id="zend.config.adapters.ini.example.using">
  45. <title>Zend_Config_Ini benutzen</title>
  46. <para>
  47. Dieses Beispiel zeigt die grundlegende Nutzung von
  48. <classname>Zend_Config_Ini</classname> um Konfigurations-Daten aus einer
  49. <acronym>INI</acronym> Datei zu laden. In diesem Beispiel gibt es Konfigurations-Daten
  50. für ein Produktiv- und ein Staging-System. Da sich die Daten für das Staging-System nur
  51. unwesentlich von denen für das Produktiv-System unterscheiden, erbt das Staging-System
  52. vom Produktiv-System. In diesem Fall ist die Entscheidung darüber, welche Sektion von
  53. welcher erben soll, willkürlich und es könnte auch anders herum gemacht werden. In
  54. komplexeren Fällen ist das möglicherweise nicht der Fall. Nehmen wir also an, dass sich
  55. die folgenden Konfigurations-Daten in der Datei
  56. <filename>/path/to/config.ini</filename> befinden:
  57. </para>
  58. <programlisting language="ini"><![CDATA[
  59. ; Konfigurations-Daten für die Produktiv-Site
  60. [production]
  61. webhost = www.example.com
  62. database.adapter = pdo_mysql
  63. database.params.host = db.example.com
  64. database.params.username = dbuser
  65. database.params.password = secret
  66. database.params.dbname = dbname
  67. ; Konfigurations-Daten für die Staging-Site, erbt von der Produktion
  68. ; und überschreibt Werte, wo nötig
  69. [staging : production]
  70. database.params.host = dev.example.com
  71. database.params.username = devuser
  72. database.params.password = devsecret
  73. ]]></programlisting>
  74. <para>
  75. Nehmen wir weiterhin an, dass der Anwendungs-Entwickler die Staging-Konfiguration aus
  76. dieser <acronym>INI</acronym> Datei benötigt. Es ist ein Leichtes, diese Daten zu laden,
  77. es muss nur die <acronym>INI</acronym> Datei und die Staging-Sektion spezifiziert
  78. werden:
  79. </para>
  80. <programlisting language="php"><![CDATA[
  81. $config = new Zend_Config_Ini('/path/to/config.ini', 'staging');
  82. echo $config->database->params->host; // Ausgabe "dev.example.com"
  83. echo $config->database->params->dbname; // Ausgabe "dbname"
  84. ]]></programlisting>
  85. </example>
  86. <note>
  87. <table id="zend.config.adapters.ini.table">
  88. <title>Zend_Config_Ini Kontruktor Parameter</title>
  89. <tgroup cols="2">
  90. <thead>
  91. <row>
  92. <entry>Parameter</entry>
  93. <entry>Notizen</entry>
  94. </row>
  95. </thead>
  96. <tbody>
  97. <row>
  98. <entry><varname>$filename</varname></entry>
  99. <entry>Die <acronym>INI</acronym> Datei die geladen wird.</entry>
  100. </row>
  101. <row>
  102. <entry><varname>$section</varname></entry>
  103. <entry>
  104. Die [section] innerhalb der ini Datei die geladen wird. Das Setzen dieses
  105. Parameters auf <constant>NULL</constant> lädt alle Sektionen. Alternativ,
  106. kann ein Array von Sektionsnamen übergeben werden um mehrere Sektionen zu
  107. laden.
  108. </entry>
  109. </row>
  110. <row>
  111. <entry><varname>$options</varname> (Default <constant>FALSE</constant>)</entry>
  112. <entry>Options Array. Die folgenden Schlüssel werden unterstützt:
  113. <itemizedlist>
  114. <listitem>
  115. <para>
  116. <emphasis><property>allowModifications</property></emphasis>:
  117. Auf <constant>TRUE</constant> gesetzt erlaubt es weiterführende
  118. Modifikationen der geladenen Konfigurationsdaten im Speicher.
  119. Standardmäßig auf <constant>NULL</constant> gestellt
  120. </para>
  121. </listitem>
  122. <listitem>
  123. <para>
  124. <emphasis><property>nestSeparator</property></emphasis>: Auf
  125. das Zeichen zu setzen das als Abschnitts Separator verwendet
  126. wird. Standardmäßig auf "." gestellt
  127. </para>
  128. </listitem>
  129. </itemizedlist>
  130. </entry>
  131. </row>
  132. </tbody>
  133. </tgroup>
  134. </table>
  135. </note>
  136. </sect1>
  137. <!--
  138. vim:se ts=4 sw=4 et:
  139. -->