Wie speichere ich eine gemeinsame Konfiguration für zend, phing und phpunit?

8

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:

  • Datenbankkonfiguration (Dev-, Staging-, Produktions- und Unittests)
  • Pfade einschließen. Wir verwenden einige ältere Bibliotheken, die nicht mit Autoloadern funktionieren. Bis jetzt haben wir das teilweise mit einer intelligenten Auto-Prepend-Datei gelöst.
  • Einige Webservice-API-Anmeldeinformationen
Sander Marechal 28.07.2011, 10:26
quelle

1 Antwort

7
  

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 .

    
David Weinraub 28.07.2011, 11:49
quelle