<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 15103 -->
<!-- Reviewed: no -->
<sect1 id="zend.config.introduction">
    <title>Introduction</title>

    <para>
        <classname>Zend_Config</classname> est conçu pour simplifier l'accès et l'utilisation des
        données de configuration dans les applications. Il fournit une interface utilisateur basée
        sur des propriétés d'objets imbriquées. Les données de configuration peuvent venir de
        sources variées supportant une organisation hiérarchique des données. Actuellement
        <classname>Zend_Config</classname> fournit des adaptateurs pour les données de
        configuration qui sont stockées dans des fichier textes avec
        <link linkend="zend.config.adapters.ini"><classname>Zend_Config_Ini</classname></link> et
        <link linkend="zend.config.adapters.xml"><classname>Zend_Config_Xml</classname></link>.
    </para>

    <example id="zend.config.introduction.example.using">
        <title>Utilisation native de Zend_Config</title>

        <para>
            Normalement on s'attend à ce que les utilisateurs emploient une des classes
            d'adaptateur telles que
            <link linkend="zend.config.adapters.ini"><classname>Zend_Config_Ini</classname></link>
            ou
            <link linkend="zend.config.adapters.xml"><classname>Zend_Config_Xml</classname></link>,
            mais si les données de configuration sont disponibles dans un tableau PHP, on peut
            simplement passer les données au constructeur de <classname>Zend_Config</classname>
            afin d'utiliser une interface orientée objet simple&#160;:
        </para>

        <programlisting role="php"><![CDATA[
// Fourni un tableau de configuration
$configArray = array(
    'webhost' => 'www.example.com',
    'database' => array(
        'adapter' => 'pdo_mysql',
        'params'  => array(
            'host'     => 'db.example.com',
            'username' => 'dbuser',
            'password' => 'secret',
            'dbname'   => 'mydatabase'
        )
    )
);

// Crée un objet à partir des données de configuration
$config = new Zend_Config($configArray);

// Affiche une donnée de configuration en particulier
// (résultat : 'www.example.com')
echo $config->webhost;

// Utilise les données de configuration pour se connecter
// à une base de données
$db = Zend_Db::factory($config->database->adapter,
                       $config->database->params->toArray());

// Autre possibilité : fournir simplement l'objet Zend_Config.
// Zend_Db factory sait comment l'interpréter.
$db = Zend_Db::factory($config->database);
]]></programlisting>

    </example>

    <para>
        Comme illustré dans l'exemple ci-dessus, <classname>Zend_Config</classname> fournit une
        syntaxe de propriétés d'objets imbriquées pour accéder aux données de configuration passées
        à son constructeur.
    </para>

    <para>
        Avec l'accès de type orienté-objet aux données, <classname>Zend_Config</classname> a aussi
        la méthode <code>get()</code> qui retournera la valeur par défaut si l'élément n'existe
        pas. Par exemple&#160;:
    </para>

    <programlisting role="php"><![CDATA[
$host = $config->database->get('host', 'localhost');
]]></programlisting>

    <example id="zend.config.introduction.example.file.php">
        <title>
            Utilisez <classname>Zend_Config</classname> avec un fichier de configuration en PHP
        </title>

        <para>
            Il est souvent souhaitable d'utiliser une fichier de configuration en pur PHP. Le code
            suivant illustre comment ceci peut être facilement réalisé&#160;:
        </para>

        <programlisting role="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 role="php"><![CDATA[
// Lecture de la configuration
$config = new Zend_Config(require 'config.php');

// Affiche une donnée de configuration ('www.example.com')
echo $config->webhost;
]]></programlisting>
    </example>
</sect1>
