# Introdução

Zend_Config é projetado para simplificar o acesso e a utilização dos dados de configuração dentro das aplicações. Ele fornece uma propriedade do objeto aninhado baseado na interface de usuário para acessar dados de configuração no código do aplicativo. Os dados de configuração podem vir de uma variedade de meios de suporte para armazenamento de dados hierárquico. Atualmente Zend_Config fornece adaptadores para dados de configuração que são armazenados em arquivos de texto com Zend_Config_Ini e Zend_Config_Xml.

Usando o Zend_Config

Normalmente, espera-se que os usuários usem uma das classes adaptadoras como Zend_Config_Ini ou Zend_Config_Xml, mas se os dados de configuração estão disponíveis em uma matriz PHP, pode-se simplesmente passar os dados para o construtor Zend_Config a fim de utilizar uma simples interface orientada a objetos:

    // Dada uma matriz de dados de configuração
    $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);

    // Imprimir um dado de configuração (resulta em 'www.example.com')
    echo $config->webhost;

    // Utiliza os dados de configuração para se conectar ao banco de dados
    $db = Zend_Db::factory($config->database->adapter,
                           $config->database->params->toArray());

    // Uso alternativo: simplesmente passar o objeto Zend_Config.
    // A fábrica do Zend_Db sabe como interpretá-lo.
    $db = Zend_Db::factory($config->database);

Como ilustrado no exemplo acima, Zend_Config fornece a sintaxe da propriedade do objeto aninhado para acessar os dados de configuração passados para o construtor.

Junto com o acesso orientado a objeto aos valores dos dados, Zend_Config também tem o get(), que retornará o valor padrão fornecido se o elemento do dado não existir. Por exemplo:

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

Usando o Zend_Config com um Arquivo de Configuração em PHP

Muitas vezes é desejável utilizar um arquivo de configuração puramente em PHP. O código a seguir ilustra como isto pode ser realizado facilmente:

    // 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'
            )
        )
    );

    // Consumo de configuração
    $config = new Zend_Config(require 'config.php');

    // Imprimir um dado de configuração (resulta em 'www.example.com')
    echo $config->webhost;