Zend_Config_Ini.xml 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 14978 -->
  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. ]]>
  40. </programlisting>
  41. </para>
  42. </note>
  43. <example id="zend.config.adapters.ini.example.using">
  44. <title><classname>Zend_Config_Ini</classname> benutzen</title>
  45. <para>
  46. Dieses Beispiel zeigt die grundlegende Nutzung von <classname>Zend_Config_Ini</classname> um
  47. Konfigurations-Daten aus einem XML-File zu laden. In diesem Beispiel gibt es
  48. Konfigurations-Daten für ein Produktiv- und ein Staging-System. Da sich die Daten für
  49. das Staging-System nur unwesentlich von denen für das Produktiv-System unterscheiden,
  50. erbt das Staging-System vom Produktiv-System. In diesem Fall ist die Entscheidung
  51. darüber, welche Sektion von welcher erben soll, willkürlich und es könnte auch anders
  52. herum gemacht werden. In komplexeren Fällen ist das möglicherweise nicht der Fall.
  53. Nehmen wir also an, dass sich die folgenden Konfigurations-Daten in der Datei
  54. <code>/path/to/config.ini</code> befinden:
  55. </para>
  56. <programlisting role="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. ]]>
  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 role="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. ]]>
  83. </programlisting>
  84. </example>
  85. <note>
  86. <table id="zend.config.adapters.ini.table">
  87. <title>Zend_Config_Ini Kontruktor Parameter</title>
  88. <tgroup cols="2">
  89. <thead>
  90. <row>
  91. <entry>Parameter</entry>
  92. <entry>Notizen</entry>
  93. </row>
  94. </thead>
  95. <tbody>
  96. <row>
  97. <entry><code>$filename</code></entry>
  98. <entry>The INI Datei die geladen wird.</entry>
  99. </row>
  100. <row>
  101. <entry><code>$section</code></entry>
  102. <entry>Die [section] innerhalb der ini Datei die geladen wird. Das Setzen dieses Parameters
  103. auf null lädt alle Sektionen. Alternativ, kann ein Array von Sektionsnamen übergeben werden um
  104. mehrere Sektionen zu laden.</entry>
  105. </row>
  106. <row>
  107. <entry><code>$options = false</code></entry>
  108. <entry>Options Array. Die folgenden Schlüssel werden unterstützt:
  109. <itemizedlist>
  110. <listitem>
  111. <para>
  112. <emphasis>allowModifications</emphasis>: Auf true gesetzt erlaubt es
  113. weiterführende Modifikationen der geladenen Datei. Standardmäßig auf false
  114. gestellt
  115. </para>
  116. </listitem>
  117. <listitem>
  118. <para>
  119. <emphasis>nestSeparator</emphasis>: Auf das Zeichen zu setzen das als Abschnitts
  120. Separator verwendet wird. Standardmäßig auf "." 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. -->