3.2. Zend_Config_Array

3.2.1. Einführung

Zend_Config_Array ermöglicht es Entwicklern, auf Konfigurations Daten, die in einem mehrdimensionalen assoziativen PHP Array gespeichert sind, mit Hilfe der Objekt Eigenschaften durch Zend_Config zuzugreifen.

Beispiel 3.2. In einem PHP Array gespeicherte Konfigurations Daten

Dieses Beispiel zeigt die einfache Nutzung von Zend_Config_Array für das Laden von Konfigurations Daten aus einem PHP Array. Zuerst, wird ein PHP Array erstellt welches die Konfigurations Daten enthält:

<?php
// Konfigurations Daten der Produktions Site
$config['production'] = array(
    'webhost' => 'www.example.com',
    'database' => array(
        'type'     => 'pdo_mysql',
        'host'     => 'db.example.com',
        'username' => 'dbuser',
        'password' => 'secret',
        'name'     => 'dbname'
    )
);

// Staging Site Konfigurations Daten vererbt von der Produktions Site und
// Werte überladen wo notwenig
$config['staging'] = $config['production'];
$config['staging']['webhost'] = 'dev.example.com';
$config['staging']['database']['host'] = 'dev.example.com';
$config['staging']['database']['username'] = 'devuser';
$config['staging']['database']['password'] = 'devsecret';
?>           

[Anmerkung] Anmerkung
Das Array mit den Konfigurations Daten muß im geladenen PHP Skript $config genannt werden.

Vererbung wird im obigen Beispiel durch eine Verknüpfung der production Sektionswerte zu der staging Sektion unterstützt. Jetzt ist es eine einfache Angelegenheit die Konfigurations Daten mit Zend_Config_Array zu Laden:

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

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

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

Es ist zu Beachten das alle Werte der Konfigurations Daten, weil diese direkt einem PHP Array hinzugefügt werden, den selben Daten Typ haben, wie das im PHP Skript enthaltene $config Array.

<?php
$config['staging']['debug']   = 'false'; // Der Wert ist ein String Typ
$config['staging']['console'] = false;   // Der Wert ist ein Boolean Typ
$config['staging']['timeout'] = 30;      // Der wert ist ein Integer Typ
?>