Schlagwort-Archiv: environment

Verschiedene Environments mit dem ZF2

zf2 environments Die meisten Anwendungen laufen mittlerweile in verschiedenen Environments. Entwickler, die vom ZF1 auf das ZF2 umsteigen, suchen oft nach einer Möglichkeit, für die verschiedene Environments verschiedene Einstellungen zu nutzen. Im ZF1 war dies innerhalb der Datei application.ini möglich. Im ZF2 ist diese Datei nicht mehr vorhanden. Es müssen andere Möglichkeiten gesucht werden, Variablen abhängig von der Environment zu setzen.

Da die Konfiguration mittlerweile Plain-PHP ist, liegt natürlich das Abfragen einer Umgebungsvariable nahe. Das könnte dann zum Beispiel so aussehen:

return array(
    'db' => array(
        'driver' => 'Pdo',
        'dsn'            => 'mysql:dbname=example;host=localhost',
        'username'       => getenv('APP_ENV') == 'dev'
                          ? 'root'
                          : 'admin',
        'password'       => getenv('APP_ENV') == 'dev'
                          ? ''
                          : '123456',
        'driver_options' => array(
            PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
        ),
    )
);

Das funktioniert zwar, allerdings liefert das ZF2 von Hause aus eine bessere Möglichkeit mit: das config/autoload-Verzeichnis. Das Vorgehen ist ganz einfach: Man lege eine Datei mit den globalen Einstellungen ab, die auf global.php endet. Sie enthält die Einstellungen, die in allen Environments gleich sind. Für unser Beispiel sieht das so aus:

return array(
    'db' => array(
        'driver' => 'Pdo',
        'dsn'            => 'mysql:dbname=example;host=localhost',
        'driver_options' => array(
            PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
        ),
    )
);

Ergänzt wird das ganze dann durch eine Datei, die auf local.php endet. Sie enthält die umgebungsspezifischen Konfigurationen. Für unsere dev-Umgebung sähe das so aus:

return array(
    'db' => array(
        'username'       => 'root',
        'password'       => '',
    )
);

Die dazugehörige .gitignore sorgt dann dafür, dass die Datei mit den umgebungsspezifischen Konfigurationen nicht im Repository landet. Dieses Vorgehen hat zwei Vorteile: Zum einen kann jeder Entwickler beliebige Konfigurationen verwenden, ohne dass sich die Konfigurationsdateien unnötig aufblähen, zum anderen landen keine sicherheitskritischen Daten im Repository.

Es ist also nicht besonders schwierig, verschiedene Environments im ZF2 zu konfigurieren. Meiner Meinung nach ist es sogar einfacher geworden, wenn man das Prinzip einmal verstanden hat.

ZF2-Kurztipp: Environment mit ZFTool testen

zf2 kurztipps zftool Während sich das Zend_Tool im Zend Framework 1 noch hauptsächlich darauf beschränkt hat, Controller und andere Klassen anzulegen, bringt sein Nachfolger, das ZFTool-Modul, für das Zend Framework 2 auch die Möglichkeit mit, seine Environment automatisch zu überprüfen. Das ganze nennt sich Diagnostics und funktioniert wahlweise über die Kommandozeile oder das Webinterface. In der Anleitung wird nicht nur das Einbinden bestehender Tests erklärt, sondern auch, wie man mit wenigen Zeilen Code eigene Tests schreibt – anschauen lohnt sich.