<?xml version="1.0" encoding="UTF-8"?>
<!-- Reviewed: no -->
<sect1 id="zend.config.introduction">
    <title>Введение</title>
    <para>
        <classname>Zend_Config</classname> создан для того, чтобы сделать более
        простым доступ к конфигурационным данным и их использование внутри приложения.
        Он предоставляет основанный на вложенных свойствах объектов пользовательский
        интерфейс для доступа к конфигурационным данным внутри приложения.
        Конфигурационные данные могут храниться на различных носителях информации,
        поддерживающих хранение данных в виде иерархии. На данный момент
        <classname>Zend_Config</classname> предоставляет адаптеры для конфигурационных
        данных, хранящихся в текстовых файлах:
        <link linkend="zend.config.adapters.ini"><classname>Zend_Config_Ini</classname></link>
        и <link linkend="zend.config.adapters.xml"><classname>Zend_Config_Xml</classname></link>.
    </para>
    <example id="zend.config.introduction.example.using">
        <title>Использование Zend_Config</title>
        <para>
            Обычно предполагается, что используется один из классов адаптеров, например,
            <link linkend="zend.config.adapters.ini"><classname>Zend_Config_Ini</classname></link>
            или <link linkend="zend.config.adapters.xml"><classname>Zend_Config_Xml</classname></link>.
            Но если конфигурационные данные доступны в виде массива
            <acronym>PHP</acronym>,
            то можно передавать эти данные конструктору <classname>Zend_Config</classname>,
            чтобы использовать преимущества простого объектно-ориентированного
            интерфейса.
        </para>
        <programlisting language="php"><![CDATA[
// Массив конфигурационных данных
$configArray = array(
    'webhost'  => 'www.example.com',
    'database' => array(
        'adapter' => 'pdo_mysql',
        'params'  => array(
            'host'     => 'db.example.com',
            'username' => 'dbuser',
            'password' => 'secret',
            'dbname'   => 'mydatabase'
        )
    )
);

// Создание объектно-ориентированной обертки для конфигурационных данных
require_once 'Zend/Config.php';
$config = new Zend_Config($configArray);

// Вывод элемента конфигурационных данных (результатом будет 'www.example.com')
echo $config->webhost;

// Использование конфигурационных данных для соединения с базой данных
$db = Zend_Db::factory($config->database->adapter,
                       $config->database->params->toArray());

// Альтернативный способ - просто передавайте объект Zend_Config.
// Фабрика Zend_Db знает, как его интерпретировать.
$db = Zend_Db::factory($config->database);
]]></programlisting>
    </example>
    <para>
        Как показано в предыдущем примере, в <classname>Zend_Config</classname> для
        доступа к конфигурационным данным, переданным его конструктору,
        используется синтаксис вложенных свойств объектов.
    </para>
    <para>
        Кроме объектно-ориентированного доступа к значениям данных,
        <classname>Zend_Config</classname> также предоставляет метод
        <methodname>get()</methodname>,
        который будет возвращать значение по умолчанию, если элемент
        данных не существует. Например:
    </para>
    <programlisting language="php"><![CDATA[
$host = $config->database->get('host', 'localhost');
]]></programlisting>
    <example id="zend.config.introduction.example.file.php">
        <title>Использование Zend_Config с конфигурационным файлом PHP</title>
        <para>
            Часто требуется использовать конфигурационный файл,
            основанный на "чистом" <acronym>PHP</acronym>. Следующий код
            показывает, как просто этого достичь:
        </para>
        <programlisting language="php"><![CDATA[
// config.php
return array(
    'webhost'  => 'www.example.com',
    'database' => array(
        'adapter' => 'pdo_mysql',
        'params'  => array(
            'host'     => 'db.example.com',
            'username' => 'dbuser',
            'password' => 'secret',
            'dbname'   => 'mydatabase'
        )
    )
);]]></programlisting>
        <programlisting language="php"><![CDATA[
// Использование конфигурации
$config = new Zend_Config(require 'config.php');

// Вывод элемента конфигурационных данных (результатом будет 'www.example.com')
echo $config->webhost;
]]></programlisting>
    </example>
</sect1>
<!--
vim:se ts=4 sw=4 et:
-->
