Zend Framework: Konfigurationsdaten aus der application.ini lesen

Das Zend Framework ist hervorragend dokumentiert, es werden PHP-Coding Standards verwendet und alles ist vorbildlich mit Unit-Tests abgedeckt.

Dennoch gibt es aber manchmal Fälle, in denen man sich in der Dokumentation verliert und einfach nicht mehr weiter kommt.

Einer dieser alltäglichen Fälle ist das Auslesen von Konfigurationsdaten aus der application.ini
In der Zend Framework Dokumentation werden zwei Möglichkeiten beschrieben, wie man die eigene PHP-Applikation über PHP oder über XML konfigurieren kann.

Aber die offensichtliche Lösung über application.ini wird nicht behandelt.

Folgende Lösung funktioniert (zumindest mit der Version 1.9.0):

In der application.ini wird zunächst die gewünschte Konfiguration angelegt, in diesem Fall die Zugangsparameter zu einer MySQL-Datenbank:

  1. db1.host = "someHost"
  2. db1.dbname = "someDb"
  3. db1.username = "someUser"
  4. db1.password = "somePassword"


Im Controller, der die Konfigurationsdaten benötigt, wird die foldende Methode erstellt:

  1. public function preDispatch() {
  2.         $bootstrap = $this->getInvokeArg('bootstrap');
  3.         $config = $bootstrap->getOptions();
  4.        
  5.         $this->_db1_config = array(
  6.          'host' => $config['db1']['host']
  7.         ,'dbname' => $config['db1']['dbname']
  8.         ,'username' => $config['db1']['username']
  9.         ,'password' => $config['db1']['password']);
  10.  
  11.         parent::preDispatch();
  12. }


Aus dieser Methode geht hervor, dass wir ein (per Konvention) privates Attribut _db1config im Controller anlegen müssen mit Daten aus der application.ini über $bootstrap->getOptions() füttern.

Da diese Zugangsdaten zur Datenbank jetzt - natürlich rein zufällig - als Array vorliegen, können diese direkt weiterverwendet werden, z.B. so:

  1. Zend_Db::factory('Mysqli', $this->_db1_config);

Tags: