Zend_Config_Ini.xml 6.4 KB

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