Ein kurzer Blick auf den Status der PHP-Entwicklung

In den letzten Jahren hat sich in PHP extrem viel getan. Nach einem anfänglich doch belächeltem Status ist PHP zu einer mächtigen Instanz herangereift, fundiert auf kontinuierlicher Entwicklung, flankiert durch unzählige Tools und getragen durch eine aktive Community. Mittlerweile ist PHP ein Big Player – wen wundert es da, dass der Einstieg für Programmierer immer komplexer wird. Man kann natürlich immer noch in Sekunden ein paar Zeilen prozeduralen PHP-Code raushauen. In der folgenden Übersicht versuche ich aber mal ein paar Anlaufstellen aufzuzeigen, mit denen man sich nach dem Einstieg oder auch noch mit jahrelanger Erfahrung auf jeden Fall beschäftigen sollte.

IDE

Die Abkürzung IDE steht für Integrated Development Environment. Neben den klassischen, kleinen Text-Editoren gibt es bereits einige Baukästen, die sich auf PHP spezialisiert haben oder einen Funktionsumfang für PHP anbieten. Der Sinn hinter IDEs ist die Integration unterschiedlicher Werkzeuge in einer Software. Meistens durch optionale Plugins unterstützt, verwende ich also nicht für verschiedene Arbeitsschritte unterschiedliche Programme, sondern steuere meine Entwicklung aus einer Applikation heraus. Zur Auswahl stehen Eclipse PDT, Zend Studio, Aptana, NetbeansPHPStorm und die Komodo IDE (sicher was vergessen, oder? Schreib’s in die Kommentare). Alle IDEs haben Stärken und Schwächen. Im Grunde bieten sie aber einen ähnlichen, wenn nicht sogar identischen Funktionsumfang.

Debugging

PHP ist eine serverseitige Skriptsprache. Zur Überprüfung meiner Arbeit während der Erzeugung des Codes brauche ich also mindestens einen Server als Interpreter. Klassisches Debugging besteht aus der expliziten Ausgabe des Programmzustandes in meinem Code und einer Überprüfung dieser Ausgabe durch Aufruf meiner Entwicklung im Browser oder in den Server-Logfiles. Das ist doof. Debugger wie der Zend Debugger oder Xdebug erleichtern mir die Arbeit und erzeugen Ausgaben und Informationen bereits während der Erstellung des Codes. Beide lassen sich hervorragend in IDEs einbinden.

Tests

Testen sieht meistens so aus: Applikation im Browser aufrufen und so lange probieren, bis man ein vages Gefühl der Sicherheit bekommt. Falsch! PHPUnit bietet automatisierte Tests von atomaren Bestandteilen meines Codes bis hin zur Erzeugung von komplexen Testsuites, um bei sauberer und umsichtiger Anwendung jederzeit ein Qualitätsbild meiner Entwicklung zu zeichnen. SimpleTest macht das auf ähnliche Art und Weise. Selenium liefert mir noch die zusätzliche Option, funktional, aber automatisiert im Browser zu testen – per Makros. Selenium lässt sich übrigens fein in PHPUnit integrieren und von dort aus steuern.

Analyse

Wer hat schon einmal wirklich seinen Code analysiert? Anzahl Klassen? Komplexität? Mit Werkzeugen wie phploc und pdepend schafft man sich schnell einen Überblick. Die Ergebnisse sind nicht einfach zu verstehen oder zu interpretieren, gehören aber zu den erforderlichen Standards, sobald Projekte mal etwas grösser werden. phpcpd liefert dazu die Menge von dupliziertem Code in meinen Modulen. Zeit für Refactoring :)

Qualität

Natürlich programmiert jeder sauber. Der PHP Code Sniffer und der PHP Mess Detector unterstützen das ganze jedoch auch noch mit Audits und Kennzahlen. Der Code Sniffer sorgt für ein einheitliches Bild und verhindert, dass ich schludere – im Code, wie auch in der Dokumentation. Der Mess Detector macht mich darauf aufmerksam, wenn ich nicht ausreichend abstrahiere, zuviel in eine Code-Passage packe oder Variablen nicht sauber benenne.

Dokumentation

Ohne Zweifel: Eine automatisierte Dokumentation gehört zu jedem PHP-Projekt. Ganz einfach geht das mit dem phpDocumentor. JavaDoc-ähnlich werden meine Kommentare im PHP-Code automatisch in eine ansehnliche HTML-Oberfläche verwandelt.

Versionierung

Zugegeben: Versionierung hat nicht viel mit PHP zu tun sondern ist eher ein generelles Werkzeug in der Software-Entwicklung. Trotzdem kann man nicht genug betonen: Software-Entwicklung benötigt Versionierung. Klassisch geht das mit CVS (ja, gibt’s auch noch) und SVN. Erfahrene, Mehrversteher und Disziplinierte verwenden .git oder Mercurial.

Build und Deployment

Gerade die Tatsache, dass man seine PHP-Anwendungen nicht kompilieren muss, war ja eine der Vorzugsargumente für den Einstieg in PHP, oder? Wenn man komplexere Projekte entwickelt, sehnt man sich jedoch nach Automatisierung durch Build-Skripte. Mit ant oder phing verwende ich XML-Instruktionen, um mein Testing, Staging oder Deployment zu automatisieren. Im Build kann ich dann viele der oben genannten Werkzeuge implementieren. Automatisiertes Durchlaufen meiner Testsuites, Codeanalyse, Trennung von Test- und Produktivcode, Export aus der Versionierung, Up- bzw. Download per sFTP, Verzeichnisse anlegen, Dateien kopieren, umbenennen, löschen oder Skripte ausführen.

Einsatz

Unerlässlich für Installation und Einsatz der meisten Tools ist PEAR, eine Paketverwaltung für die Kommandozeile aller Betriebsysteme. Für Netbeans und Eclipse-basierte IDEs gibt es weitere Plugins. Z. B. bietet PTI als Eclipse-Plugin eine ganze Toolbox auf einmal. Für Netbeans gibt es ein PHP Mess Detector und PHP Code Sniffer-Plugin. Wer schlau ist, nutzt einen Aggregator von Gregor Krsteski für alle Analysen auf einmal über PHP auf der Kommandozeile.

Zur kontinuierlichen Integration von allem stehen mehrere Systeme zur Verfügung: Hudson, Jenkins oder phpUnderControl.

Viel Spass beim Stöbern und Lernen.

Dieser Beitrag wurde unter PHP, Web-Entwicklung veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>