<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 15103 -->
<!-- Reviewed: no -->
<sect1 id="zend.config.adapters.ini">
    <title>Zend_Config_Ini</title>
    <para>
        <classname>Zend_Config_Ini</classname>
        permite a los desarrolladores almacenar datos de configuración
        en un formato de datos INI familiar, y leer de ellos en la
        aplicación usando una sintáxis de propiedades de objetos
        anidados. El formato INI se especializa en proveer tanto la
        habilidad de mantener una jerarquía de claves de datos (data
        keys) de configuración como la de mantener una jerarquía entre
        secciones de datos de configuración. Las jerarquías de datos de
        configuración son provistas separando las claves mediante el
        carácter punto (
        <methodname>.</methodname>
        ). Una sección puede extender o heredar de otra sección
        indicando el nombre de la sección seguido de dos puntos (
        <methodname>:</methodname>
        ) y el nombre de la sección desde la cual se quieren heredar los
        datos.
    </para>
    <note>
        <title>parse_ini_file</title>
        <para>
            <classname>Zend_Config_Ini</classname>
            utiliza la función
            <ulink url="http://php.net/parse_ini_file">
                <methodname>parse_ini_file()</methodname>
            </ulink>
            de PHP. Por favor, revise esta documentación para observar
            sus comportamientos específicos, que se propagan a
            <classname>Zend_Config_Ini</classname>
            , tales como la forma en que los valores especiales:
            <methodname>true</methodname>
            ,
            <methodname>false</methodname>
            ,
            <methodname>yes</methodname>
            ,
            <methodname>no</methodname>
            , y
            <constant>NULL</constant>
            son manejados.
        </para>
    </note>
    <note>
        <title>Separador de clave</title>
        <para>
            Por defecto, el carácter separador de clave es el punto (
            <methodname>.</methodname>
            ). Puede ser reemplazado, no obstante,cambiando la clave de
            <methodname>$options</methodname>
            llamada
            <methodname>'nestSeparator'</methodname>
            al construir el objeto
            <classname>Zend_Config_Ini</classname>
            . Por ejemplo:
             <programlisting language="php"><![CDATA[
$options['nestSeparator'] = ':';
$config = new Zend_Config_Ini('/path/to/config.ini',
                              'pruebas',
                              $options);
]]></programlisting>
        </para>
    </note>
    <example id="zend.config.adapters.ini.example.using">
        <title>Utilizando Zend_Config_Ini</title>
        <para>
            Este ejemplo muestra una forma de uso básica de
            <classname>Zend_Config_Ini</classname>
            para cargar datos de configuración de un archivo INI. En
            este ejemplo hay datos de configuración tanto para un
            sistema de producción como para un sistema en fase de
            pruebas. Debido a que los datos de la fase de pruebas son
            muy parecidos a los de producción, la sección de pruebas
            hereda de la sección de producción. En este caso, la
            decisión es arbitraria y podría haberse escrito a la
            inversa, con la sección de producción heredando de la
            sección de pruebas, a pesar de que éste no sería el caso
            para situaciones más complejas. Supongamos, entonces, que
            los siguientes datos de configuración están contenidos en
            <methodname>/path/to/config.ini</methodname>
            :
        </para>
        <programlisting language="ini"><![CDATA[
; Datos de configuración de la web de producción
[produccion]
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

; Los datos de configuración de la fase de pruebas heredan de la producción
; y sobreescribren valores si es necesario
[pruebas : produccion]
database.params.host     = dev.example.com
database.params.username = devuser
database.params.password = devsecret
]]></programlisting>
        <para>
            Ahora, asuma que el desarrollador de aplicaciones necesita
            los datos de configuración de la etapa de pruebas del
            archivo INI. Resulta fácil cargar estos datos especificando
            el archivo INI en la sección de la etapa de pruebas:
        </para>
         <programlisting language="php"><![CDATA[
$config = new Zend_Config_Ini('/path/to/config.ini', 'pruebas');

echo $config->database->params->host;   // muestra "dev.example.com"
echo $config->database->params->dbname; // muestra "dbname"
]]></programlisting>
    </example>
    <note>
        <table id="zend.config.adapters.ini.table">
            <title>Parámetros del constructor Zend_Config_Ini</title>
            <tgroup cols="2">
                <thead>
                    <row>
                        <entry>Parámetros</entry>
                        <entry>Notas</entry>
                    </row>
                </thead>
                <tbody>
                    <row>
                        <entry>
                            <methodname>$filename</methodname>
                        </entry>
                        <entry>
                            El archivo INI que se va a cargar.
                        </entry>
                    </row>
                    <row>
                        <entry>
                            <methodname>$section</methodname>
                        </entry>
                        <entry>
                            La [sección] contenida en el archivo ini que
                            se va a cargar. Fijar este parámetro a null
                            cargará todas las secciones.
                            Alternativamente, se puede introducir un
                            array de nombres de sección para cargar
                            multiples secciones.
                        </entry>
                    </row>
                    <row>
                        <entry>
                            <methodname>$options = false</methodname>
                        </entry>
                        <entry>
                            Array de opciones. Las siguientes claves
                            están aceptadas:
                            <itemizedlist>
                                <listitem>
                                    <para>
                                        <emphasis>
                                            allowModifications
                                        </emphasis>
                                        : Fijar a
                                        <emphasis>true</emphasis>
                                        para permitir modificaciones
                                        subsiguientes del archivo
                                        cargado. Por defecto es
                                        <emphasis>false</emphasis>
                                    </para>
                                </listitem>
                                <listitem>
                                    <para>
                                        <emphasis>
                                            nestSeparator
                                        </emphasis>
                                        : Carácter que utilizar como
                                        separador de anidamiento. Por
                                        defecto es "."
                                    </para>
                                </listitem>
                            </itemizedlist>
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </table>
    </note>
</sect1>
<!--
    vim:se ts=4 sw=4 et:
-->
