3.2. Zend_Config_Array

3.2.1. Inleiding

Zend_Config_Array laat programmeurs toe om configuratiedata op te slaan in multidimensionele associatieve PHP arrays, die dan kunnen worden aangesproken als objecteigenschappen via Zend_Config.

Voorbeeld 3.2. Configuratiedata Opgeslaan in PHP Arrays

Dit voorbeeld illustreert het basisgebruik van Zend_Config_Array voor het laden van configuratiedata vanuit PHP arrays. Eerst moeten we PHP arrays aanmaken met configuratiedata:

<?php
// Productiesite configuratiedata
$config['productie'] = array(
    'webhost' => 'www.example.com',
    'database' => array(
        'type'     => 'pdo_mysql',
        'host'     => 'db.example.com',
        'username' => 'dbuser',
        'password' => 'secret',
        'name'     => 'dbname'
    )
);

// Ontwikkelingssite configuratiedata erft van productie en
// overschrijft waardes waar nodig
$config['staging'] = $config['productie'];
$config['staging']['webhost'] = 'dev.example.com';
$config['staging']['database']['host'] = 'dev.example.com';
$config['staging']['database']['username'] = 'devuser';
$config['staging']['database']['password'] = 'devsecret';
?>       
[Opmerking] Opmerking
De array met condfiguratiedata moet $config worden genoemd in het ingeladen PHP script.

Erfenis wordt in het voorbeeld hierboven gebruikt door de waarden van de productie sectie aan de staging sectie toe te schrijven. Nu is het eenvoudig om de configuratiedata via Zend_Config_Array in te laden:

<?php
require_once 'Zend/Config.php';
require_once 'Zend/Config/Array.php';

$config = new Zend_Config(Zend_Config_Array::load('/pad/naar/config.php', 'staging'));

echo $config->database->host; // prints "dev.example.com"
?>       

Het moet worden opgemerkt dat, vermits de configuratiedata onmiddellijk aan de PHP arrays worden toegevoegd, elke configuratiedatawaarde hetzelfde type zal hebben als dewelke in de $config array werd toegekend.

<?php
$config['staging']['debug']   = 'false'; // waarde is een string type
$config['staging']['console'] = false; // waarde is een boolean type
$config['staging']['timeout'] = 30; // waarde is een integer type
?>