<?xml version="1.0" encoding="UTF-8"?>
    <!-- EN-Revision: 24249 -->
    <!-- Reviewed: no -->
<sect1 id="zend.config.introduction">
    <title>Introducción</title>
    <para>
        <classname>Zend_Config</classname>
        está diseñado para simplificar el
        acceso y el uso de datos de configuración dentro de
        aplicaciones. Provee
        una interfaz de usuario basada en propiedades de objetos anidadas para
        acceder a datos de configuración dentro del código de la aplicación. Los
        datos de
        configuración pueden venir de multitud de medios que soporten
        almacenamiento de datos de
        forma jerárquica. Actualmente
        <classname>Zend_Config</classname>
        provee adaptadores para datos de
        configuración que están almacenados en archivos de texto con
        <link linkend="zend.config.adapters.ini">
            <classname>Zend_Config_Ini</classname>
        </link>
        y
        <link linkend="zend.config.adapters.xml">
            <classname>Zend_Config_Xml</classname>
        </link>
        .
    </para>
    <example id="zend.config.introduction.example.using">
        <title>Usando Zend_Config Per Se</title>
        <para>
            Normalmente, se espera que los usuarios usen una de las clases
            adaptadoras como
            <link linkend="zend.config.adapters.ini">
                <classname>Zend_Config_Ini</classname>
            </link>
            o
            <link linkend="zend.config.adapters.xml">
                <classname>Zend_Config_Xml</classname>
            </link>
            , pero si los datos de configuración están disponibles en un
            array
            <acronym>PHP</acronym>
            , se puede simplemente pasar los datos
            al constructor
            <classname>Zend_Config</classname>
            para utilizar una
            interfaz simple orientada a objetos:
        </para>
        <programlisting language="php"><![CDATA[
// Dado un array de datos de configuración
$configArray = array(
    'webhost'  => 'www.example.com',
    'database' => array(
        'adapter' => 'pdo_mysql',
        'params'  => array(
            'host'     => 'db.example.com',
            'username' => 'dbuser',
            'password' => 'secret',
            'dbname'   => 'mydatabase'
        )
    )
);

// Crea el objeto a partir de los datos de configuración
$config = new Zend_Config($configArray);

// Muestra un dato de configuración (resultado: 'www.example.com')
echo $config->webhost;

// Use los datos de configuración para conectarse a la base de datos
$db = Zend_Db::factory($config->database->adapter,
                       $config->database->params->toArray());

// Uso alternativo: simplemente pase el objeto Zend_Config.
// La Zend_Db factory sabe cómo interpretarlo.
$db = Zend_Db::factory($config->database);
]]></programlisting>
    </example>
    <para>
        Como se ilustra en el ejemplo de arriba,
        <classname>Zend_Config</classname>
        provee una sintáxis de
        propiedades de objetos anidados para acceder a datos de configuración
        pasados a su constructor.
    </para>
    <para>
        Junto al acceso a valores de datos orientado a objetos,
        <classname>Zend_Config</classname>
        también tiene el método
        <methodname>get()</methodname>
        que devolverá el valor por defecto
        suministrado si el elemento de datos no existe. Por
        ejemplo:
    </para>
    <programlisting language="php"><![CDATA[
$host = $config->database->get('host', 'localhost');
]]></programlisting>
    <example id="zend.config.introduction.example.file.php">
        <title>Usando Zend_Config con un Archivo de Configuración PHP</title>
        <para>
            A veces, es deseable usar un archivo de configuración puramente
            <acronym>PHP</acronym>
            . El código siguiente ilustra cómo podemos
            conseguir esto fácilmente:
        </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[
// Lectura de la configuración
$config = new Zend_Config(require 'config.php');

// Muestra un dato de configuración (resultado: 'www.example.com')
echo $config->webhost;
]]></programlisting>
    </example>
</sect1>
