Theory of Operation

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.

Note: Die Ini Datei parsen
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.

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

  1. $options['nestSeparator'] = ':';
  2. $config = new Zend_Config_Ini('/path/to/config.ini',
  3.                               'staging',
  4.                               $options);

Example #1 Zend_Config_Ini benutzen

Dieses Beispiel zeigt die grundlegende Nutzung von Zend_Config_Ini um Konfigurations-Daten aus einer INI Datei 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:

  1. ; Konfigurations-Daten für die Produktiv-Site
  2. [production]
  3. webhost                  = www.example.com
  4. database.adapter         = pdo_mysql
  5. database.params.host     = db.example.com
  6. database.params.username = dbuser
  7. database.params.password = secret
  8. database.params.dbname   = dbname
  9.  
  10. ; Konfigurations-Daten für die Staging-Site, erbt von der Produktion
  11. ; und überschreibt Werte, wo nötig
  12. [staging : production]
  13. database.params.host     = dev.example.com
  14. database.params.username = devuser
  15. database.params.password = devsecret

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

  1. $config = new Zend_Config_Ini('/path/to/config.ini', 'staging');
  2.  
  3. echo $config->database->params->host;   // Ausgabe "dev.example.com"
  4. echo $config->database->params->dbname; // Ausgabe "dbname"

Note:

Zend_Config_Ini Kontruktor Parameter
Parameter Notizen
$filename Die INI Datei die geladen wird.
$section Die [section] innerhalb der INI Datei die geladen wird. Das Setzen dieses Parameters auf NULL lädt alle Sektionen. Alternativ, kann ein Array von Sektionsnamen übergeben werden um mehrere Sektionen zu laden.
$options (Default FALSE) Options Array. Die folgenden Schlüssel werden unterstützt:
  • allowModifications: Auf TRUE gesetzt erlaubt es weiterführende Modifikationen der geladenen Konfigurationsdaten im Speicher. Standardmäßig auf NULL gestellt

  • nestSeparator: Auf das Zeichen zu setzen das als Abschnitts Separator verwendet wird. Standardmäßig auf "." gestellt


Theory of Operation