Zend_Config_Ini.xml 6.3 KB

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