Ich habe eine PHP-Anwendung, die mit Zend Framework geschrieben wurde. Es verwendet Phing für ein Build-System und PHPUnit für Komponententests. Alle diese Teile haben Konfigurationseinstellungen. Zend verwendet application.xml
, Phing verwendet build.xml
und optional einige build.properties
und PHPUnit verwendet phpunit.xml
.
Aber wo speichere ich Informationen, die von allen drei Komponenten benötigt werden? Denken Sie an die Datenbankkonfiguration (zum Beispiel Passwörter).
In meinem Fall hat das application.xml
verschiedene Abschnitte (Dev, Staging, Produktion), alle mit unterschiedlichen Datenbankkonfigurationen. Ich habe kürzlich ein ORM in meine Anwendung integriert und möchte nun meine Modelle unitesten. Also habe ich eine vierte Datenbank (Unittesting), die von PHPUnit verwendet wird.
PHPUnit kann Fixture-Daten, aber keine Datenbankschemata verarbeiten. Also dachte ich, ich würde ein Build-Ziel von Phing schreiben, das das Datenbankschema von der Produktion oder dem Staging in die Unittest-Datenbank kopiert. Auf diese Weise habe ich den zusätzlichen Vorteil, dass ich meine Datenbankmigrationsskripte sogar zusammenfügen kann. Dazu benötigt Phing jedoch gleichzeitig Zugriff auf mehrere Datenbanken.
Mein erster Bauch war es, die Konfiguration für alle vier Datenbanken in build.properties
zu speichern und Phing einfach application.xml
und phpunit.xml
zu generieren. Aber es fühlt sich an, dreckig , dass ein Build-System Konfigurationsdateien generiert.
Was ist die beste Lösung hier? Oder sollte ich einfach die Konfigurationsdetails duplizieren und sich nicht zu viele Sorgen machen?
Gedanken
Ich könnte sie einfach duplizieren. Es sind nur ein paar Einstellungen und sie sollten sich nicht oft ändern. Aber ich wette, wenn sie sich ändern, werde ich die Duplizierung vergessen haben (weil es selten passiert). Zu den gemeinsam genutzten Parametern gehören:
Mein erster Gedanke war, alle Konfigurationen für alle vier Datenbanken in build.properties zu speichern und phing einfach mit application.xml und phpunit.xml zu versehen. Aber es fühlt sich äh, dreckig an, ein Build-System Konfigurationsdateien erzeugen zu lassen.
Nun, um sie vollständig zu erzeugen, scheint es ein bisschen dreckig zu sein. Aber wenn das Build-System einfach Token-Ersetzung von Phings build.properties-Datei auf .dist-Versionen Ihrer verschiedenen Konfigurationsdateien durchführt, scheint mir das ok zu sein.
Ein Beispiel finden Sie im Quellcode des Dasprids-Blogs .
Tags und Links configuration php phpunit zend-framework phing