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>