Zend_Config_Ini.xml 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15848 -->
  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 INI-Format zu speichern und sie mit einer Syntax auszulesen, die dem
  9. Zugriff auf die Eigenschaften verschachtelter Objekte entspricht. Das verwendete
  10. INI-Format bietet einerseits die Möglichkeit, Konfigurations-Daten hierarchisch abzulegen
  11. und andererseits Vererbung zwischen Sektionen zu spezifizieren.
  12. Konfigurations-Daten-Hierarchien werden durch das Trennen der Schlüsselwörter durch einen
  13. Punkt (<emphasis>.</emphasis>). Eine Sektion kann eine andere Sektion erweitern oder
  14. beerben indem man nach dem Sektionsname einen Doppelpunkt (<emphasis>:</emphasis>) notiert,
  15. 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 PHP-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. <emphasis>'nestSeparator'</emphasis> geändert wird, wenn das
  34. <classname>Zend_Config_Ini</classname> Objekt instanziert wird.
  35. Zum Beispiel:
  36. <programlisting language="php"><![CDATA[
  37. $options['nestSeparator'] = ':';
  38. $config = new Zend_Config_Ini('/path/to/config.ini',
  39. 'staging',
  40. $options);
  41. ]]></programlisting>
  42. </para>
  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 einem XML-File zu
  49. laden. In diesem Beispiel gibt es Konfigurations-Daten für ein Produktiv- und ein
  50. Staging-System. Da sich die Daten für das Staging-System nur unwesentlich von denen für
  51. das Produktiv-System unterscheiden, erbt das Staging-System vom Produktiv-System. In
  52. diesem Fall ist die Entscheidung darüber, welche Sektion von welcher erben soll,
  53. willkürlich und es könnte auch anders herum gemacht werden. In komplexeren Fällen ist
  54. das möglicherweise nicht der Fall. Nehmen wir also an, dass sich die folgenden
  55. Konfigurations-Daten in der Datei <filename>/path/to/config.ini</filename> befinden:
  56. </para>
  57. <programlisting language="ini"><![CDATA[
  58. ; Konfigurations-Daten für die Produktiv-Site
  59. [production]
  60. webhost = www.example.com
  61. database.adapter = pdo_mysql
  62. database.params.host = db.example.com
  63. database.params.username = dbuser
  64. database.params.password = secret
  65. database.params.dbname = dbname
  66. ; Konfigurations-Daten für die Staging-Site, erbt von der Produktion
  67. ; und überschreibt Werte, wo nötig
  68. [staging : production]
  69. database.params.host = dev.example.com
  70. database.params.username = devuser
  71. database.params.password = devsecret
  72. ]]></programlisting>
  73. <para>
  74. Nehmen wir weiterhin an, dass der Anwendungs-Entwickler die Staging-Konfiguration aus
  75. diesem INI-File benötigt. Es ist ein Leichtes, diese Daten zu laden, es muss nur das
  76. INI-File und die Staging-Sektion spezifiziert werden:
  77. </para>
  78. <programlisting language="php"><![CDATA[
  79. $config = new Zend_Config_Ini('/path/to/config.ini', 'staging');
  80. echo $config->database->params->host; // Ausgabe "dev.example.com"
  81. echo $config->database->params->dbname; // Ausgabe "dbname"
  82. ]]></programlisting>
  83. </example>
  84. <note>
  85. <table id="zend.config.adapters.ini.table">
  86. <title>Zend_Config_Ini Kontruktor Parameter</title>
  87. <tgroup cols="2">
  88. <thead>
  89. <row>
  90. <entry>Parameter</entry>
  91. <entry>Notizen</entry>
  92. </row>
  93. </thead>
  94. <tbody>
  95. <row>
  96. <entry><varname>$filename</varname></entry>
  97. <entry>The INI Datei die geladen wird.</entry>
  98. </row>
  99. <row>
  100. <entry><varname>$section</varname></entry>
  101. <entry>Die [section] innerhalb der ini Datei die geladen wird. Das Setzen dieses
  102. Parameters auf null lädt alle Sektionen. Alternativ, kann ein Array von
  103. Sektionsnamen übergeben werden um mehrere Sektionen zu laden.</entry>
  104. </row>
  105. <row>
  106. <entry><varname>$options = false</varname></entry>
  107. <entry>Options Array. Die folgenden Schlüssel werden unterstützt:
  108. <itemizedlist>
  109. <listitem>
  110. <para>
  111. <emphasis>allowModifications</emphasis>: Auf true gesetzt
  112. erlaubt es weiterführende Modifikationen der geladenen Datei.
  113. Standardmäßig auf false gestellt
  114. </para>
  115. </listitem>
  116. <listitem>
  117. <para>
  118. <emphasis>nestSeparator</emphasis>: Auf das Zeichen zu setzen
  119. das als Abschnitts Separator verwendet wird. Standardmäßig auf
  120. "." gestellt
  121. </para>
  122. </listitem>
  123. </itemizedlist>
  124. </entry>
  125. </row>
  126. </tbody>
  127. </tgroup>
  128. </table>
  129. </note>
  130. </sect1>
  131. <!--
  132. vim:se ts=4 sw=4 et:
  133. -->