TigerZF
🌐Español

Capítulo 21. Zend_Config

21.1. Introducción

Zend_Config está diseñado para simplificar el acceso a, y el uso de, los datos de configuración dentro de las aplicaciones. Proporciona una interfaz de usuario basada en propiedades de objetos anidados para acceder a estos datos de configuración dentro del código de la aplicación. Los datos de configuración pueden provenir de una variedad de medios que admiten almacenamiento de datos jerárquico. Actualmente Zend_Config proporciona adaptadores para datos de configuración almacenados en archivos de texto con Zend_Config_Ini y Zend_Config_Xml.

Ejemplo 21.1. Uso de Zend_Config

Normalmente se espera que los usuarios utilicen una de las clases adaptadoras como Zend_Config_Ini o Zend_Config_Xml, pero si los datos de configuración están disponibles en un array PHP, se puede simplemente pasar los datos al constructor de Zend_Config para utilizar una interfaz orientada a objetos sencilla:

// Given an array of configuration data
$configArray = array(
    'webhost'  => 'www.example.com',
    'database' => array(
        'adapter' => 'pdo_mysql',
        'params'  => array(
            'host'     => 'db.example.com',
            'username' => 'dbuser',
            'password' => 'secret',
            'dbname'   => 'mydatabase'
        )
    )
);

// Create the object-oriented wrapper upon the configuration data
$config = new Zend_Config($configArray);

// Print a configuration datum (results in 'www.example.com')
echo $config->webhost;

// Use the configuration data to connect to the database
$db = Zend_Db::factory($config->database->adapter,
                       $config->database->params->toArray());

// Alternative usage: simply pass the Zend_Config object.
// The Zend_Db factory knows how to interpret it.
$db = Zend_Db::factory($config->database);

Como se ilustra en el ejemplo anterior, Zend_Config proporciona una sintaxis de propiedades de objetos anidados para acceder a los datos de configuración pasados a su constructor.

Junto con el acceso orientado a objetos a los valores de datos, Zend_Config también tiene get(), que devolverá el valor por defecto suministrado si el elemento de datos no existe. Por ejemplo:

$host = $config->database->get('host', 'localhost');

Ejemplo 21.2. Uso de Zend_Config con un archivo de configuración PHP

A menudo es deseable utilizar un archivo de configuración puramente basado en PHP. El siguiente código ilustra lo fácil que resulta lograrlo:

// 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'
        )
    )
);
// Configuration consumption
$config = new Zend_Config(require 'config.php');

// Print a configuration datum (results in 'www.example.com')
echo $config->webhost;