5.3. Zend_Config_Ini

Zend_Config_Ini staat programmeurs toe configuratiedate op te slaan in een gekend INI formaat en deze terug in te lezen in de toepassing door gebruik te maken van een syntax met geneste objecteigenshappen. Het INI formaat is gespecializeerd om een hiërarchie van configuratiedata keys te verstrekken, evenals de erfelijkheid tussen verschillende configuratiedata sekties. Hiërachies van configuratiedata worden ondersteund door de keys te scheiden met een punt (.). Een sektie kan een andere sektie uitbreiden of overerven door een dubbelpunt te schrijven achter de sektienaam (:) en de naam van de sektie van dewelke de data wordt geërfd.

[Opmerking] Opmerking

Zend_Config_Ini gebruikt de parse_ini_file() PHP functie. Ga deze dokumentatie na om op de hoogte te zijn van specifiek gedrag van de functie, die wordt overgedragen naar Zend_Config_Ini, zoals hoe speciale waarden als true, false, yes, no, and null worden behandeld.

Voorbeeld 5.2. Zend_Config_Ini gebruiken

Dit voorbeeld illustreert een basisgebruik van Zend_Config_Ini voor het inladen van configuratiedata vanuit een INI bestand. In dit voorbeeld vind je configuratiedata voor zowel een productiesysteem als een preproductiesysteem. Vermits de preproductiesysteem configuratiedata sterk overeenkomt met de productieserver configuratiedata, erft de preproductieserver sectie van de productie sectie. In dit geval is de beslissing arbitrair en zou dit andersom kunnen worden geschreven, de productieserver sectie zou erven van de preproductieserver sectie, alhoewel het niet het geval zou kunnen zijn in meer complexe situaties. Veronderstel dan dat de volgende configuratiedata in /path/to/config.ini staat :

; Configuratiedata voor productieserver
[productie]
webhost           = www.example.com
database.type     = pdo_mysql
database.host     = db.example.com
database.username = dbuser
database.password = secret
database.name     = dbname

; Preproductieserver configuratiedata erft van productieserver en
; overschrijft waarden waar nodig
[preproductie : productie]
database.host     = dev.example.com
database.username = devuser
database.password = devsecret

Veronderstel vervolgens dat de programmeur de preproductie configuratiedata van het INI bestand nodig heeft. Het is eenvoudig om die data in te laden door het INI bestand en de preproductie sectie te specifiëren :

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

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

echo $config->database->host; // geeft "dev.example.com"
echo $config->database->name; // geeft "dbname"