Frage

Nach dem "modernen PHP-Workflow" Artikel in der November 2008 Ausgabe von PHP zu lesen | Architekt Magazin die diskutiert Unit-Tests ( phpunit ), bauen Werkzeuge ( Phing ) und fortlaufende Integration ( Xinc ) , ich bin die mehr über einige der Werkzeuge, die für PHP, vor allem Phing verfügbar lernen inspiriert.

In der Vergangenheit habe ich oft beim Einsatz in einen Produktionsserver abgewickelt durch die Live-Website als Subversion Arbeitskopie läuft und einfach einen „svn update“ auf dem Produktionsfeld mit der neuesten Version des Codes zu implementieren.

Haben Sie Tools für PHP-Code bauen verwenden? Welche Vorteile Sie glauben, dass sie bieten mehr als von Subversion direkten Bereitstellung? Was soll ich Ausschau nach, oder welche gotchas könnte ich stellen?

War es hilfreich?

Lösung

Ich habe sowohl Phing und Ant und bevorzugen verwendet, um die letztere viel mehr. Ich ging zunächst mit Phing wegen es aber in PHP geschrieben wird um ehrlich zu sein es nicht so ausgereift wie Ant ist. Am Ende ein ausgereiftes Buildsystem mit einer großen Gemeinschaft, die mehr wert.

Dinge getan mit Ant / Phing:

  1. Von einer Basis Kasse loalize auf eine bestimmte Sprache, sicherzustellen, Abhängigkeiten sind (andere Libs, Verzeichnisse, usw.)
  2. , wenn Sie sie haben, kompilieren Vorlagen usw.
  3. Bringen Zieldatenbank bis zu der benötigten Version, abhängig von der Code-Version ausgecheckt
  4. run Unit-Tests, usw.

Andere Tipps

Ein großes Problem, das ich mit Phing sehen ist, dass es eine unnötige Schicht Indirektionsebene schafft. PHP ist eine Skriptsprache, und somit direkt ausgeführt werden können. Phing die Nutzung von XML-Konfiguration ist eine schlechte Passform für die Sprache: es bietet eine besser lesbare deklarative Konfiguration, aber auf Kosten einer der Flexibilität der Sprache zu opfern. Mit Ant (die Inspiration für diese Strecke) ist es sinnvoll, da Java nicht, dass die Flexibilität hat, da sie weniger dynamisch und erfordern Kompilierung.

Leider habe ich nicht viele gute Alternativen in dem PHP-Raum gesehen und im Gegensatz zu anderen Sprachen Build-Tools sind nicht als wesentlich oder ein Teil der Kultur, so dass die Entwicklung einer anderen gut unterstützte Option nicht in absehbarer Zeit passieren kann.

Ich würde daher Optionen halten, die näher sind, was PHP könnte tun aus Kulturen, die mehr Unterstützung aggressiv Werkzeuge bauen. Ich benutze normalerweise Gradle . Rake macht auch einen guten Job in Abhängigkeit von mit der Sprache, die Sie betrügen wollen (und es können auch andere ähnliche Optionen sein ). Sie sollten auch Dinge wie WebDriver Unterstützung wiegen, wenn Sie in diese Art der Sache sind. Ansonsten eine leichte Lösung zu schaffen mit PHP und / oder BASH sollte alles abdecken, während die Transparenz beibehalten

Ich sah auf Phing es ziemlich genial aussieht. Für das Projekt arbeite ich an Ich verwende eigentlich Apache Ant . Ich benutze es ein paar Dinge zu tun:

  1. Kombinieren und komprimieren Sie Javascript und CSS (Kompression mit dem YUI Compressor
  2. Ersetzen Standard-Konfigurationsdateien mit Produktionskonfigurationsdateien (z umbenennen config.php.production config.php)
  3. Entfernen nicht benötigten Dateien (wie die Ant-Build-Datei, build.xml)

Ich denke, Phing wert ist über Ant suchen, weil es nativen PHP, was schön sein könnte. Auch wenn Sie etwas mehr tun, als nur kopieren / Dateien um Ausschau nach Performance-Probleme zu bewegen, wenn Sie in der Produktionsumgebung zu bewegen. Ich hatte ein Problem, wo der YUI Kompressor auf meinem lokalen Rechner fein lief aber auf der relativ kleinen VPS es war super langsam.

Bei einem Projekt arbeite ich an jetzt verwenden wir phpUnderControl Tests zu laufen und bekommen schnelles Feedback, wenn etwas kaputt ist. Wir planen, es zu verwenden, um andere Tests als auch wie einige laufen geschrieben in Watir .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top