Zend_Config_Ini.xml 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <sect1 id="zend.config.adapters.ini">
  2. <title>Zend_Config_Ini</title>
  3. <para>
  4. <code>Zend_Config_Ini</code> дает разработчикам возможность хранить
  5. конфигурационные данные в знакомом большинству формате INI и считывать
  6. их в приложении с использованием синтаксиса вложенных свойств объекта.
  7. Формат INI специализируется на обеспечении иерархии конфигурационных
  8. данных и наследования между разделами конфигурационных данных.
  9. Иерархии конфигурационных данных поддерживаются посредством
  10. разделения ключей точкой (<code>.</code>). Раздел можно расширять
  11. или наследовать от другого раздела посредством указания имени раздела
  12. с двоеточием (<code>:</code>) и именем раздела, от которого
  13. наследуются данные, после него.
  14. </para>
  15. <note>
  16. <title>Синтаксический разбор INI-файла</title>
  17. <para>
  18. <code>Zend_Config_Ini</code> использует функцию PHP
  19. <ulink url="http://php.net/parse_ini_file"><code>parse_ini_file()</code></ulink>.
  20. Пожалуйста, почитайте документацию, чтобы получить представление об
  21. особенностях ее поведения, которые распространяются и на
  22. <code>Zend_Config_Ini</code> — например, о том, как обрабатываются
  23. специальные значения <code>true</code>, <code>false</code>, <code>yes</code>,
  24. <code>no</code> и <code>null</code>.
  25. </para>
  26. </note>
  27. <note>
  28. <title>Разделитель ключей</title>
  29. <para>
  30. По умолчанию разделителем ключей является символ точки
  31. (<code>.</code>). Он может быть заменен на любой другой путем
  32. изменения ключа <code>'nestSeparator'</code> в массиве
  33. <code>$options</code> при создании объекта <code>Zend_Config_Ini</code>.
  34. Например:
  35. <programlisting role="php"><![CDATA[
  36. $options['nestSeparator'] = ':';
  37. $config = new Zend_Config_Ini('/path/to/config.ini',
  38. 'staging',
  39. $options);
  40. ]]>
  41. </programlisting>
  42. </para>
  43. </note>
  44. <example id="zend.config.adapters.ini.example.using">
  45. <title>Использование <code>Zend_Config_Ini</code></title>
  46. <para>
  47. Данный пример демонстрирует использование <code>Zend_Config_Ini</code>
  48. для загрузки конфигурационных данных из файла INI. В этом примере
  49. используются конфигурационные данные для производственной и
  50. промежуточной систем. Поскольку конфигурационные данные для
  51. промежуточной и производственной систем в основном одни и те же,
  52. то "промежуточный" (staging) раздел наследует от
  53. "производственного" (production) раздела. В данном случае выбор
  54. произвольный, т.е. может быть и наоборот — "производственный"
  55. раздел наследует от "промежуточного", хотя это может не подходить в
  56. более сложных случаях. Допустим, конфигурационные данные
  57. находятся в файле <code>/path/to/config.ini</code>:
  58. </para>
  59. <programlisting role="ini"><![CDATA[
  60. ; Конфигурационные данные производственного сайта
  61. [production]
  62. webhost = www.example.com
  63. database.adapter = pdo_mysql
  64. database.params.host = db.example.com
  65. database.params.username = dbuser
  66. database.params.password = secret
  67. database.params.dbname = dbname
  68. ; Конфигурационные данные промежуточного сайта наследуются от
  69. ; данных производственного и подменяют их при необходимости.
  70. [staging : production]
  71. database.params.host = dev.example.com
  72. database.params.username = devuser
  73. database.params.password = devsecret
  74. ]]>
  75. </programlisting>
  76. <para>
  77. Далее предположим, что разработчику приложения нужны "промежуточные"
  78. конфигурационные данные из файла INI. Загрузить эти данные,
  79. указав файл INI и нужный раздел, довольно просто:
  80. </para>
  81. <programlisting role="php"><![CDATA[
  82. $config = new Zend_Config_Ini('/path/to/config.ini', 'staging');
  83. echo $config->database->params->host; // выведет "dev.example.com"
  84. echo $config->database->params->dbname; // выведет "dbname"
  85. ]]>
  86. </programlisting>
  87. </example>
  88. <note>
  89. <table id="zend.config.adapters.ini.table">
  90. <title>Параметры конструктора Zend_Config_Ini</title>
  91. <tgroup cols="2">
  92. <thead>
  93. <row>
  94. <entry>Параметр</entry>
  95. <entry>Примечание</entry>
  96. </row>
  97. </thead>
  98. <tbody>
  99. <row>
  100. <entry><code>$filename</code></entry>
  101. <entry>INI-файл для загрузки</entry>
  102. </row>
  103. <row>
  104. <entry><code>$section</code></entry>
  105. <entry>
  106. Раздел в INI-файле, который должен быть загружен.
  107. Установка этого параметра в null вызовет загрузку всех
  108. разделов. Также может быть передан массив имен разделов
  109. для загрузки нескольких разделов.
  110. </entry>
  111. </row>
  112. <row>
  113. <entry><code>$options = false</code></entry>
  114. <entry>
  115. Массив опций. Поддерживаются следующие ключи:
  116. <itemizedlist>
  117. <listitem>
  118. <para>
  119. <emphasis>allowModifications</emphasis>:
  120. Устанавливается в true, чтобы разрешить
  121. последующую модификацию загруженного файла.
  122. По умолчанию установлен в false
  123. </para>
  124. </listitem>
  125. <listitem>
  126. <para>
  127. <emphasis>nestSeparator</emphasis>:
  128. Задает символ, используемый в качестве
  129. разделителя узлов. По умолчанию это "."
  130. </para>
  131. </listitem>
  132. </itemizedlist>
  133. </entry>
  134. </row>
  135. </tbody>
  136. </tgroup>
  137. </table>
  138. </note>
  139. </sect1>
  140. <!--
  141. vim:se ts=4 sw=4 et:
  142. -->