2008-08-31 4 views
24

Verwendet jemand Phing, um PHP-Anwendungen zu implementieren, und wenn ja, wie verwenden Sie es? Wir haben derzeit ein handgeschriebenes "Setup" -Skript, das wir ausführen, wenn wir eine neue Instanz unseres Projekts bereitstellen. Wir checken einfach von SVN und führen es aus. Er legt einige grundlegende Konfigurationsvariablen fest, installiert oder lädt die Datenbank neu und generiert einen v-Host für die Site-Instanz.Verwenden Sie Phing?

Ich habe oft gedacht, dass wir vielleicht Phing verwenden sollten. Ich habe nicht viel verwendet, also habe ich keinen wirklichen Sinn dafür, was Phing anders machen soll als das Kopieren von Dateien von einem Ort zum anderen, ähnlich wie unser Setup-Skript. Was sind einige fortgeschrittene Anwendungen, die Sie Beispiele geben können, um mir zu helfen zu verstehen, warum wir Phing in unseren Prozess integrieren wollten oder wollten.

Antwort

16

Von Federico Cargnelutti des blog post:

Eigenschaften umfassen Datei Transformationen (zB Token Ersatz, XSLT-Transformation Smarty Template-Transformationen), Systemoperationen, interaktive Build Unterstützung, SQL-Ausführungsdatei, CVS Operationen , Werkzeuge zum Erstellen von PEAR Paketen und vieles mehr.

Natürlich könnten Sie benutzerdefinierte Skripte für alle oben genannten schreiben. Die Verwendung eines speziellen Build-Tools wie Phing bietet Ihnen jedoch eine Reihe von Vorteilen. Sie werden ein bewährtes Framework verwenden, anstatt sich um die Einrichtung einer "Infrastruktur" zu kümmern, können Sie sich auf den Code konzentrieren, den Sie schreiben müssen. Durch die Verwendung von Phing wird es auch einfacher für neue Mitglieder, wenn sie Ihrem Team beitreten, dass sie verstehen, was passiert, wenn sie zuvor Phing (oder Ant, auf dem Phing basiert) verwendet haben.

3

Ich sehe keinen zwingenden Grund, mit Phing zu gehen. Ich meine, sollten PHP-Programmierer versuchen, Eclipse neu zu schreiben, "nur weil" es irgendwie einfacher sein könnte, Eclipse-Plugins in PHP zu schreiben? Ich denke nicht.

Ant hat eine bessere Dokumentation, einschließlich einiger schöner O'Reilly-Bücher, und es ist im Java-Universum gut etabliert, so vermeiden Sie die Probleme von (1) "Wir haben Feature X noch nicht nach Phing kopiert" und (2) das Risiko, dass das Phing-Projekt tot geht. Here's ein Artikel über die Konfiguration von PHPUnit mit Ant und Cruisecontrol zu arbeiten: nicht so schwer. Und Sie erhalten die Eclipse-Integration kostenlos.

Viel Glück!

+4

Nun, Neuschreiben Eclipse ist wahrscheinlich nicht die beste Idee, mit Ant-Port in PHP ist wirklich eine großartige Idee. Der Grund ist einfach: benutzerdefinierte Aufgaben, die in einfachem alten PHP erledigt werden können (nicht jeder kennt Java gut genug). Building-Anwendung, mehr als oft, beinhaltet benutzerdefinierte Funktionalität, die automatisiert werden soll, und die Fähigkeit, dies in der Sprache zu tun, die Sie beherrschen - gut, für mich könnte es als ein großes Plus betrachtet werden. P.S. Wenn Sie Java verwenden, dann sollten Sie sich wahrscheinlich Maven ansehen :)) –

+0

Die Dokumentation von Ant ist nicht besser als die von Phing. Ja, Phings Unterlagen fehlen mehr Beispiele als Ant's. – cweiske

+0

Sie müssen ANT nicht in PHP umschreiben, um benutzerdefinierte Aufgaben zu erstellen. Alles, was Sie brauchen, sollte eine Adaptertask oder ein Compiler sein, mit dem Sie PHP-Skripte von ANT ausführen können. –

7

Ich bin von Ant nach Phing umgezogen, nur weil es PHP ist. Ich benutze es, um aus verschiedenen Subversion-Repositories zu exportieren, Sachen zu kopieren, verschiedene Installationspakete zu erstellen, all das mit einer wiederverwendbaren XML-Datei mit 20 Zeilen und einer Konfigurationsdatei mit projektspezifischem Zeug. Ich konnte es mit einem benutzerdefinierten Skript nicht so schnell machen. Ich plane auch, API-Dokumentation Generation und Unit-Tests zu integrieren. Liebe es!

7

Die überzeugende Antwort für mich ist, dass Phing PHP Klassenpfade versteht. Ant nicht. Ich möchte keine amt build.xml voller exec-Befehle haben. Ich bin in erster Linie ein Java-Programmierer und benutze immer noch Phing. Es ist das beste Werkzeug für den Job.

+2

UMMM ... für die Ausführung von PHP-Skripten mit ANT, alles, was Sie brauchen, ist "#!/Usr/local/bin/php" (oder der Speicherort Ihrer PHP-Programmdatei) oben in Ihrem PHP-Skript. Dann rufen Sie einfach das Skript von ANT auf, wie Sie es für eine Linux-Befehlszeilenoperation tun würden. Sie können damit beliebige benutzerdefinierte Code-Operationen, einschließlich SQL-Befehle von PHP, lösen. –

3

Wir verwenden phing SemanticScuttle zu implementieren:

  • für
  • PEAR Paket
  • Upload zip zu Source
  • Update der PEAR channel mit der neuen Paketdatei
  • render erstellen Verteilung Zip-Archiv erzeugen reStructuredText-Dokumentation in HTML-Dateien und laden sie hoch. Derzeit mit exec, aber ich bin auf dem Weg, eine separate task dafür zu schreiben.

Hochladen der ZIP-Datei und der Kanal wird über rsync erledigt, die leider nicht unterstützt wird, indem sie durch eine besondere Aufgabe phing - aber exec verwendet, ist immer möglich und funktioniert gut.

Am Ende spart es viel Zeit und wir können unsere App mit einem einzigen Befehl testen, verpacken und bereitstellen (was uns einen weiteren Punkt auf der Joel Test gibt). Ich würde nicht ohne es leben wollen.

Siehe build.xml code.