Inhaltsverzeichnis
Zend_Config
wurde designt um den Gebrauch von Konfigurationsdaten für Web Anwendungen
zu vereinfachen. Es bietet ein Eigenschafts-basiertes Interface für das Lesen von Konfigurationsdaten
von einer Vielzahl von Medien welche hierarchische Datenspeicherung unterstützen. Aktuell bietet
Zend_Config
Helfer Klassen für Konfigurationsdaten welche in Text Dateien gespeichert sind via
Zend_Config_Array
,
Zend_Config_Ini
, und
Zend_Config_Xml
.
Zend_Config
unterstützt ein einzelnes vererbungs Modell welches es ermöglicht,
Konfigurations Daten von einem Abschnitt der Konfigurations Daten in einen anderen zu vererben. Obwohl
Zend_Config
Vererbungs Bäume beliebiger Höhe unterstützt, können Abschnitte von
Konfigurations Daten nur von einem Eltern Abschnitt vererbt werden.
Intern implementiert Zend_Config
das Countable und das Iterator Interface um den einfachen
Zugriff auf Konfigurations Daten abzubilden. Die Daten werden Zend_Config
verfügbar gemacht,
durch ein assoziatives Array, welches Mehrdimensional sein kann. Eine Helfer Klasse wie Zend_Config_Ini
liefert dieses Array typischerweise an Zend_Config
, aber das Interface muß sich nicht
Zwingenderweise an diese Konvention halten.
Anmerkung | |
---|---|
Obwohl Zend_Config die Änderung im-Speicher von geladenen Konfigurations Daten erlaubt, ist es
nicht dafür ausgelegt, um Konfigurations Daten in bestimmten Speicher Medien zu speichern. Tools für das
Erstellen und Ändern von Konfigurations Daten in bestimmten Speicher Medien sind aktuell ausserhalb des
Zend Framework Rahmens. Third-Party Open Source Lösungen sind oft erhältlich, für den Zweck der Erstellung
und Änderung von Konfigurations Daten für verschiedenste Speicher Medien.
|
Beispiel 3.1. Laden von Konfigurations Daten von einer INI Datei
In dieser Bespiel werden Konfigurations Daten für eine Produktionsumgebung von einer INI Datei geladen,
durch Benutzung von Zend_Config_Ini
:
<?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 Konfigurations Daten abrufbar durch die Objekt Eigenschaften von $config
.
Angenommen die Konfigurations Daten beinhalten Datenbank Verbindungs Parameter und die Daten werden in der
INI Datei wie folgt gespeichert :
[production] database.type = pdo_mysql database.host = db.example.com database.username = dbuser database.password = secret database.name = dbname
Die Anwendung könnte eine Verbindung zur Datenbank wie folgt realisieren:
<?php $myApplicationObject->databaseConnect($config->database->type, $config->database->host, $config->database->username, $config->database->password, $config->database->name); ?>
Wie oben gezeigt, sind die Konfigurations Daten mit Hilfe der Objekt Eigenschafts Syntax abrufbar.
Wie können also Zend_Config
sehr einfach für die vielfältigsten Zwecke erweitern. Hier
stellt eine Erweiterungsklasse die öfentliche Methode dump()
zur Verfügung, für das
schnelle Ausdrucken von geladenen Konfigurations Daten:
<?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 Konfigurations Daten im obigen Beispiel würde folgendes gedruckt werden:
<pre> database => type => pdo_mysql host => db.example.com username => dbuser password => secret name => dbname </pre>