Inhaltsverzeichnis
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>