# Zend_Config_Ini

`Zend_Config_Ini` 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 ( `.` ). Una sección puede extender o heredar de otra sección indicando el nombre de la sección seguido de dos puntos ( `:` ) y el nombre de la sección desde la cual se quieren heredar los datos.

## parse_ini_file

`Zend_Config_Ini` utiliza la función `parse_ini_file()` de PHP. Por favor, revise esta documentación para observar sus comportamientos específicos, que se propagan a `Zend_Config_Ini` , tales como la forma en que los valores especiales: `true` , `false` , `yes` , `no` , y `NULL` son manejados.

## Separador de clave

Por defecto, el carácter separador de clave es el punto ( `.` ). Puede ser reemplazado, no obstante,cambiando la clave de `$options` llamada `'nestSeparator'` al construir el objeto `Zend_Config_Ini` . Por ejemplo:

    $options['nestSeparator'] = ':';
    $config = new Zend_Config_Ini('/path/to/config.ini',
                                  'pruebas',
                                  $options);

## Utilizando Zend_Config_Ini

Este ejemplo muestra una forma de uso básica de `Zend_Config_Ini` 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 `/path/to/config.ini` :

    ; 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

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:

    $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"

## Parámetros del constructor Zend_Config_Ini

Parámetros | Notas
--- | ---
`$filename` | El archivo INI que se va a cargar.
`$section` | 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.

`$options = false`

Array de opciones. Las siguientes claves están aceptadas:

- allowModifications : Fijar a true para permitir modificaciones subsiguientes del archivo cargado. Por defecto es false

- nestSeparator : Carácter que utilizar como separador de anidamiento. Por defecto es "."