5.3. Zend_Config_Ini

Zend_Config_Ini ermöglicht es Entwicklern, Konfigurations-Daten in einem vertrauten INI-Format zu speichern und sie mit einer Syntax auszulesen, die dem Zugriff auf die Eigenschaften verschachtelter Objekte entspricht. Das verwendete INI-Format bietet einerseits die Möglichkeit, Konfigurations-Daten hierarchisch abzulegen und andererseits Vererbung zwischen Sektionen zu spezifizieren. Konfigurations-Daten-Hierarchien werden durch das Trennen der Schlüsselwörter durch einen Punkt (.). Eine Sektion kann eine andere Sektion erweitern oder beerben indem man nach dem Sektionsname einen Doppelpunkt (:) notiert, gefolgt vom Namen der zu beerbenden Sektion.

[Anmerkung] parse_ini_file

Zend_Config_Ini verwendet die PHP-Funktion parse_ini_file(). Deren Dokumentation klärt über spezielle Verhaltensweisen auf, die sich auch auf Zend_Config_Ini auswirken, z. B. wie die besonderen Werte true, false, yes, no und null gehandhabt werden.

[Anmerkung] Schlüssel Trenner

Standardmäßig ist das Schlüssel Trennzeichen der Punkt (.). Dies kann geändert werden, indem der $config Schlüssel 'nestSeparator' geändert wird, wenn das Zend_Config_Ini Objekt instanziert wird. Zum Beispiel:

<?php
require_once 'Zend/Config/Ini.php';
$config['nestSeparator'] = ':';
$config = new Zend_Config_Ini('/path/to/config.ini', 'staging', $config);

Beispiel 5.2. Zend_Config_Ini benutzen

Dieses Beispiel zeigt die grundlegende Nutzung von Zend_Config_Ini um Konfigurations-Daten aus einem XML-File zu laden. In diesem Beispiel gibt es Konfigurations-Daten für ein Produktiv- und ein Staging-System. Da sich die Daten für das Staging-System nur unwesentlich von denen für das Produktiv-System unterscheiden, erbt das Staging-System vom Produktiv-System. In diesem Fall ist die Entscheidung darüber, welche Sektion von welcher erben soll, willkürlich und es könnte auch anders herum gemacht werden. In komplexeren Fällen ist das möglicherweise nicht der Fall. Nehmen wir also an, dass sich die folgenden Konfigurations-Daten in der Datei /path/to/config.ini befinden:

; Konfigurations-Daten für die Produktiv-Site
[production]
webhost           = www.example.com
database.type     = pdo_mysql
database.host     = db.example.com
database.username = dbuser
database.password = secret
database.name     = dbname

; Konfigurations-Daten für die Staging-Site, erbt von der Produktion
; und überschreibt Werte, wo nötig
[staging : production]
database.host     = dev.example.com
database.username = devuser
database.password = devsecret

Nehmen wir weiterhin an, dass der Anwendungs-Entwickler die Staging-Konfiguration aus diesem INI-File benötigt. Es ist ein Leichtes, diese Daten zu laden, es muss nur das INI-File und die Staging-Sektion spezifiziert werden:

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

$config = new Zend_Config_Ini('/path/to/config.ini', 'staging');

echo $config->database->host; // gibt "dev.example.com" aus
echo $config->database->name; // gibt "dbname" aus
[Anmerkung] Anmerkung

Tabelle 5.1. Zend_Config_Ini Constructor parameters

Parameter Notes
$filename The INI file to load.
$section The [section] within the ini file that is to be loaded. Setting this parameter to null will load all sections. Alternatively, an array of section names may be supplied to load multiple sections.
$config = false Configuration array. The following keys are supported:
  • allowModifications: Set to true to allow subsequent modification of loaded file. Defaults to false

  • nestSeparator: Set to the character to be used as the nest separator. Defaults to "."