Zend_Config_Ini.xml 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15207 -->
  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 einem
  8. vertrauten INI-Format zu speichern und sie mit einer Syntax auszulesen, die dem Zugriff auf
  9. die Eigenschaften verschachtelter Objekte entspricht. Das verwendete INI-Format bietet
  10. einerseits die Möglichkeit, Konfigurations-Daten hierarchisch abzulegen und andererseits
  11. Vererbung zwischen Sektionen zu spezifizieren. Konfigurations-Daten-Hierarchien werden
  12. durch das Trennen der Schlüsselwörter durch einen Punkt (<code>.</code>). Eine Sektion kann
  13. eine andere Sektion erweitern oder beerben indem man nach dem Sektionsname einen
  14. 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. Zum
  33. Beispiel:
  34. <programlisting role="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 <classname>Zend_Config_Ini</classname> um
  46. Konfigurations-Daten aus einem XML-File zu laden. In diesem Beispiel gibt es
  47. Konfigurations-Daten für ein Produktiv- und ein Staging-System. Da sich die Daten für
  48. das Staging-System nur unwesentlich von denen für das Produktiv-System unterscheiden,
  49. erbt das Staging-System vom Produktiv-System. In diesem Fall ist die Entscheidung
  50. darüber, welche Sektion von welcher erben soll, willkürlich und es könnte auch anders
  51. herum gemacht werden. In komplexeren Fällen ist das möglicherweise nicht der Fall.
  52. Nehmen wir also an, dass sich die folgenden Konfigurations-Daten in der Datei
  53. <code>/path/to/config.ini</code> befinden:
  54. </para>
  55. <programlisting role="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 role="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 Parameters
  100. auf null lädt alle Sektionen. Alternativ, kann ein Array von Sektionsnamen übergeben werden um
  101. 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 erlaubt es
  110. weiterführende Modifikationen der geladenen Datei. Standardmäßig auf false
  111. gestellt
  112. </para>
  113. </listitem>
  114. <listitem>
  115. <para>
  116. <emphasis>nestSeparator</emphasis>: Auf das Zeichen zu setzen das als Abschnitts
  117. Separator verwendet wird. Standardmäßig auf "." gestellt
  118. </para>
  119. </listitem>
  120. </itemizedlist>
  121. </entry>
  122. </row>
  123. </tbody>
  124. </tgroup>
  125. </table>
  126. </note>
  127. </sect1>
  128. <!--
  129. vim:se ts=4 sw=4 et:
  130. -->