| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Reviewed: no -->
- <sect1 id="zend.config.adapters.ini">
- <title>Zend_Config_Ini</title>
- <para>
- <classname>Zend_Config_Ini</classname> дает разработчикам возможность
- хранить конфигурационные данные в знакомом большинству
- формате <acronym>INI</acronym> и считывать их в приложении с
- использованием синтаксиса вложенных свойств объекта.
- Формат <acronym>INI</acronym> специализируется на обеспечении иерархии
- конфигурационных данных и наследования между разделами
- конфигурационных данных.
- Иерархии конфигурационных данных поддерживаются посредством
- разделения ключей точкой ("<emphasis>.</emphasis>"). Раздел можно
- расширять или наследовать от другого раздела посредством указания
- имени раздела с двоеточием ("<emphasis>:</emphasis>") и именем
- раздела, от которого наследуются данные, после него.
- </para>
- <note>
- <title>Синтаксический разбор INI-файла</title>
- <para>
- <classname>Zend_Config_Ini</classname> использует функцию
- <acronym>PHP</acronym> <ulink
- url="http://php.net/parse_ini_file"><methodname>parse_ini_file()</methodname></ulink>.
- Пожалуйста, прочитайте документацию, чтобы получить представление об
- особенностях ее поведения, которые распространяются и на
- <classname>Zend_Config_Ini</classname> — например, о том, как обрабатываются
- специальные значения "<constant>TRUE</constant>",
- "<constant>FALSE</constant>", "yes",
- "no" и "<constant>NULL</constant>".
- </para>
- </note>
- <note>
- <title>Разделитель ключей</title>
- <para>
- По умолчанию разделителем ключей является символ точки
- ("<emphasis>.</emphasis>"). Он может быть заменен на любой другой
- путем изменения ключа <emphasis>'nestSeparator'</emphasis> в
- массиве <varname>$options</varname> при создании объекта
- <classname>Zend_Config_Ini</classname>. Например:
- </para>
- <programlisting language="php"><![CDATA[
- $options['nestSeparator'] = ':';
- $config = new Zend_Config_Ini('/path/to/config.ini',
- 'staging',
- $options);
- ]]></programlisting>
- </note>
- <example id="zend.config.adapters.ini.example.using">
- <title>Использование Zend_Config_Ini</title>
- <para>
- Данный пример демонстрирует использование <classname>Zend_Config_Ini</classname>
- для загрузки конфигурационных данных из файла
- <acronym>INI</acronym>. В этом примере
- используются конфигурационные данные для производственной и
- промежуточной систем. Поскольку конфигурационные данные для
- промежуточной и производственной систем в основном одни и те же,
- то "промежуточный" (staging) раздел наследует от
- "производственного" (production) раздела. В данном случае выбор
- произвольный, т.е. может быть и наоборот — "производственный"
- раздел наследует от "промежуточного", хотя это может не подходить в
- более сложных случаях. Допустим, конфигурационные данные
- находятся в файле <filename>/path/to/config.ini</filename>:
- </para>
- <programlisting language="ini"><![CDATA[
- ; Конфигурационные данные производственного сайта
- [production]
- webhost = www.example.com
- database.adapter = pdo_mysql
- database.params.host = db.example.com
- database.params.username = dbuser
- database.params.password = secret
- database.params.dbname = dbname
- ; Конфигурационные данные промежуточного сайта наследуются от
- ; данных производственного и подменяют их при необходимости.
- [staging : production]
- database.params.host = dev.example.com
- database.params.username = devuser
- database.params.password = devsecret
- ]]></programlisting>
- <para>
- Далее предположим, что разработчику приложения нужны "промежуточные"
- конфигурационные данные из файла <acronym>INI</acronym>. Загрузить
- эти данные, указав файл <acronym>INI</acronym> и нужный раздел,
- довольно просто:
- </para>
- <programlisting language="php"><![CDATA[
- $config = new Zend_Config_Ini('/path/to/config.ini', 'staging');
- echo $config->database->params->host; // выведет "dev.example.com"
- echo $config->database->params->dbname; // выведет "dbname"
- ]]></programlisting>
- </example>
- <note>
- <table id="zend.config.adapters.ini.table">
- <title>Параметры конструктора Zend_Config_Ini</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Параметр</entry>
- <entry>Примечание</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry><varname>$filename</varname></entry>
- <entry><acronym>INI</acronym>-файл для загрузки</entry>
- </row>
- <row>
- <entry><varname>$section</varname></entry>
- <entry>
- Раздел в <acronym>INI</acronym>-файле, который должен
- быть загружен.
- Установка этого параметра в <constant>NULL</constant>
- вызовет загрузку всех разделов.
- Также может быть передан массив имен разделов
- для загрузки нескольких разделов.
- </entry>
- </row>
- <row>
- <entry><varname>$options = false</varname></entry>
- <entry>
- Массив опций. Поддерживаются следующие ключи:
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>allowModifications</emphasis>:
- Устанавливается в
- <constant>TRUE</constant>, чтобы разрешить
- последующую модификацию загруженного файла.
- По умолчанию установлен в
- <constant>FALSE</constant>
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>nestSeparator</emphasis>:
- Задает символ, используемый в качестве
- разделителя узлов. По умолчанию это "."
- </para>
- </listitem>
- </itemizedlist>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </note>
- </sect1>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|