Zend_Config_Ini.xml 6.1 KB

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