Kapitel 3. Zend_Config
Zurück |  | Weiter

## Kapitel 3. Zend_Config

## 3.1. Einführung

`Zend_Config` wurde designt um die Nutzung von Konfigurationsdaten in Webanwendungen zu vereinfachen. Es beinhaltet ein eigenschaftsbasiertes Interface zum Lesen von Konfigurationsdaten aus einer Vielzahl von Formaten mit Unterstützung für hierarchische Datenstrukturen. Aktuell bietet `Zend_Config` Hilfsklassen für Konfigurationsdaten, in Form von Textdateien mittels `Zend_Config_Array`, `Zend_Config_Ini` und `Zend_Config_Xml` an.

`Zend_Config` unterstützt ein Einzelvererbungsmodell welches es ermöglicht, Konfigurationsdaten von einem Abschnitt der Konfigurationsdatei in einen anderen Abschnitt zu vererben. Obwohl `Zend_Config` eine beliebige Vererbungstiefe unterstützt, können Abschnitte von Konfigurationsdaten nur von einem Elternabschnitt erben.

Intern implementiert `Zend_Config` das Countable und das Iterator Interface um einen einfachen Zugriff auf die Konfigurationsdaten zu ermöglichen. Die Daten werden `Zend_Config` in Form eines assoziativen, mehrdimensionalen Array zur Verfügung gestellt. Typischerweise wird `Zend_Config` mittels Hilfsklassen wie `Zend_Config_Ini` mit einem solchen Array versorgt, wobei die Nutzung dieser Konvention nicht zwangsweise durch das Interface vorgeschrieben wird.

| Anmerkung
Obwohl `Zend_Config` die Änderung von geladenen Konfigurationsdaten im Speicher erlaubt, ist es nicht dafür ausgelegt, um Konfigurationsdaten in bestimmten Formaten zu speichern. Tools für die Erstellung und Änderung von Konfigurationsdaten in bestimmten Formaten befinden sich zur Zeit ausserhalb des Rahmens des Zend Framework. Oftmals sind aber Open Source Lösungen von Drittanbietern für die Erstellung und Änderung von Konfigurationsdaten in verschiedenen Formaten verfügbar.

Beispiel 3.1. Laden von Konfigurationsdaten aus einer INI-Datei

In diesem Beispiel werden Konfigurationsdaten für eine Produktionsumgebung mittels `Zend_Config_Ini` aus einer INI-Datei geladen:

    <?php
    require_once 'Zend/Config.php';
    require_once 'Zend/Config/Ini.php';
    $config = new Zend_Config(Zend_Config_Ini::load('/path/to/config.ini', 'production'));
    ?>

Nun sind die Konfigurationsdaten in Form von Eigenschaften des `$config` Objektes verfügbar. Angenommen, die Konfigurationsdaten beinhalten Parameter für eine Datenbankverbindung welche in einer INI-Datei wiefolgt gespeichert wurden:

    [production]
    database.type     = pdo_mysql
    database.host     = db.example.com
    database.username = dbuser
    database.password = secret
    database.name     = dbname

Die Anwendung könnte nun damit eine Verbindung zur Datenbank realisieren:

    <?php
    $myApplicationObject->databaseConnect($config->database->type,
                                          $config->database->host,
                                          $config->database->username,
                                          $config->database->password,
                                          $config->database->name);
    ?>

Wie oben gezeigt, sind die Konfigurationsdaten mit Hilfe der Syntax für Objekteigenschaften abrufbar.

Wir können `Zend_Config` auch sehr einfach für die vielfältigsten Zwecke erweitern. Hier stellt eine ableitende Klasse die öffentliche Methode `dump()` zum schnellen Ausgeben von geladenen Konfigurationsdaten zur Verfügung:

    <?php
    class MyConfig extends Zend_Config
    {
        protected $_indent;

        public function dump()
        {
            $this->_indent = 0;
            echo "<pre>\n";
            $this->_dumpRecursor($this);
            echo "</pre>";
        }

        protected function _dumpRecursor($config)
        {
            foreach ($config as $key => $value) {
                echo str_repeat("    ", $this->_indent) . "$key =>";
                if ($value instanceof Zend_Config) {
                    echo "\n";
                    $this->_indent++;
                    $this->_dumpRecursor($value);
                    $this->_indent--;
                } else {
                    echo " $value\n";
                }
            }
        }
    }

    $config = new MyConfig(Zend_Config_Ini::load('/path/to/config.ini', 'production'));

    $config->dump();
    ?>

Für die Konfigurationsdaten im obigen Beispiel würde Folgendes ausgegeben werden:

    <pre>
    database =>
        type => pdo_mysql
        host => db.example.com
        username => dbuser
        password => secret
        name => dbname
    </pre>

Zurück |  | Weiter
2.4. Zend_Cache Backends | Zum Anfang | 3.2. Zend_Config_Array