Zend_Config_Ini.xml 7.2 KB

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