<sect1 id="zend.config.introduction">
	<title>Introducción</title>
	<para>

		<code class="code">Zend_Config</code>
		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
		<code class="code">Zend_Config</code>
		provee adaptadores para datos de configuración que están
		almacenados en archivos de texto con
		<link linkend="zend.config.adapters.ini">
			<code>Zend_Config_Ini</code>
		</link>
		y
		<link linkend="zend.config.adapters.xml">
			<code>Zend_Config_Xml</code>
		</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">
				<code>Zend_Config_Ini</code>
			</link>
			o
			<link linkend="zend.config.adapters.xml">
				<code>Zend_Config_Xml</code>
			</link>
			, pero si los datos de configuración están disponibles
			en un array PHP, se puede simplemente pasar los datos al
			constructor 
			<code>Zend_Config</code>
			para utilizar una interfaz simple orientada a objetos:
		</para>
		<programlisting role="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,
		<code>Zend_Config</code>
		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,
		<code>Zend_Config</code>
		también tiene el método
		<code>get()</code>
		que devolverá el valor por defecto suministrado si el elemento 
		de datos no existe. Por ejemplo:
	</para>
	<programlisting role="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 PHP. El código siguiente ilustra cómo podemos conseguir
			esto fácilmente:
		</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[
// 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>
<!--
	vim:se ts=4 sw=4 et:
-->
