Sonnenfinsternis für PHP
Artikel erschienen in Swiss IT Magazine 2008/06
Der PHP-Spezialist Zend liefert seit Jahren mit Zend Studio die führende integrierte Entwicklungsumgebung (IDE) für PHP. Doch die Java-Anwendung ist in die Jahre gekommen. Vor allem der Editor wirkte je länger je weniger zeitgemäss. Zend hat dies zum Anlass genommen, um die IDE zu überarbeiten. Als Grundlage für das neue Zend Studio wurde das vor allem im Java-Bereich äusserst populäre Applikations-Framework Eclipse sowie die Eclipse-Erweiterung PHP Developer Tools verwendet, die nach wie vor kostenlos als Open Source erhältlich sind. Ergänzt wurde das Programm um die bereits aus dem alten Zend Studio bekannten und geschätzten Profiling- und Debugging-Werkzeuge. Herausgekommen ist Zend Studio for Eclipse.
Zend Studio for Eclipse verkauft Zend zusammen mit dem alten Zend Studio Professional. Verfügbar ist es für Linux, Mac und Windows – getestet haben wir die Mac-Version. Der zum Remote Debugging und Profiling beigelegte Studio Server, wie er in früheren Versionen noch vorhanden war, ist einer Entwicklerversion von Zend Platform gewichen.
Für die Browser-Integration sind Toolbars für Internet Explorer (Windows) und Firefox (alle anderen Plattformen) vorhanden.
Startet man Zend Studio for Eclipse zum ersten Mal, begrüsst einen das typische Eclipse-Interface mit einer Reihe von Views, die in dieser Form bereits aus dem alten Zend Studio bekannt sind: Projekt- und Remote-Server-Browser, Konstanten-, Funktions- und Klassen-Browser für die aktuelle Datei, das jeweilige Projekt und PHP selber. Dazu kommen Ansichten für Probleme (wie Fehlermeldungen der Syntaxprüfung) und eine Konsole, die über Aktivitäten der IDE informiert.
Insofern ist die Umstellung vom alten Zend Studio her nicht allzu gross, auch wenn man sich erst einmal an die ganzen neuen Icons gewöhnen muss. Weitere Ansichten bieten unter anderem Zugriff auf Aufgaben, eine eigene Code Gallery und diejenige von Zend, einen RSS-Reader sowie zu den verschiedenen Debugging- und Entwicklungswerkzeugen wie phpDoc.
Der Editor hat sich funktional kaum verändert. Nach wie vor bietet er Code Folding, Code Completion für Klassen, Funktionen, Variablen, Includes und Inline-Dokumentation, wobei nebst PHP auch Java (für die Java-PHP-Bridge aus Zend Platform) und BIRT unterstützt wird. Dazu kommt Syntax Highlighting sowie eine Syntax-Prüfung (beides für PHP und HTML), die auch auf «gefährlichen» Code wie include($_GET['foo']) prüft. Diese Funktion leidet wie in den Vorversionen daran, dass sie auch Codefragmente als problematisch bemäkelt, die eigentlich entschärft wurden. Abhelfen dürfte hier erst der sich bei IBM in Entwicklung befindende Taint Mode für PHP, der eine zuverlässigere Erkennung von gefährlicher respektive ungefährlicher Codenutzung ermöglicht.
Praktisch ist, dass man dank der Nutzung von Eclipse nun Funktionen nachladen kann, die einem sonst im Zend Studio fehlen. Leider besteht diese Möglichkeit nicht bei den Editing-Funktionen, womit Zend Studio diesbezüglich weniger bietet als so mancher Texteditor.
Aufgerüstet hat Zend Studio in der Eclipse-Ausgabe vor allem bei den Wizards. Beim Erstellen des Projekts ist es nun beispielsweise möglich, die zu benutzende PHP-Version festzulegen. Auch ist es möglich, in mehreren Projekten gleichzeitig zu arbeiten, was praktisch sein kann, wenn man beispielsweise Änderungen an irgendwelchen Bibliotheken vornehmen will, die im Projekt verwendet werden. Weiter wird bei der Erstellung von Projekten mit dem Zend Framework unter die Arme gegriffen. Es wird nicht nur die vom Framework erwartete Ordner-Struktur erzeugt, sondern auch einige zum Anfangen benötigte Dateien wie der Dispatcher.
Bei der Programmierung unterstützen Assistenten beim Überschreiben respektive Implementieren von Methoden sowie der Erzeugung von Getters und Setters. Hat man beispielsweise ein Klassengerüst mit einer Reihe von Eigenschaften definiert, kann man über den Menüpunkt «Source» unter «Generate Getters and Setters...» den Assistenten aufrufen, der die Setters und Getters erzeugt. Dabei ist es möglich, die Eigenschaften auszuwählen, für die Setters respektive Getters erzeugt werden sollen. Gleichzeitig kann man den Access Modifier festlegen oder ob auch Dokumentation zu den Setters und Getters erzeugt werden soll.
Wie bereits erwähnt, wurde der Zend Studio Server zwecks Remote Debugging und Profiling von Zend Platform abgelöst, die darüber hinaus noch einige weitere Funktionen wie die bereits erwähnte PHP-Java-Bridge oder ein Event Log bietet. Dazu erhält man aber auch einen lokalen Profiler und Debugger. Man kann somit die Ausführungszeit und Probleme auch ohne die Hilfe von Zend Platform analysieren.
Funktional gesehen sind sich Debugger und Profiler aus dem alten und neuen Zend Studio sehr ähnlich. Neu ist dagegen die Optik: Beide Funktionen wurden in Eclipse integriert und machen die Bedienung etwas leichter. Ausserdem ist es möglich, das Profiling und Debugging genauer zu steuern, indem man neue Run-Befehle anlegt, bei denen unter anderem der gewünschte Interpreter (PHP 4.x oder 5.x) oder bestimmte Umgebungsvariablen definiert werden können.
Als Unit-Test-Werkzeug wurde der Quasi-Standard PHP Unit integriert, auf das man über eine Ansicht Zugriff hat. Dort werden aufgetretene Fehler rapportiert sowie Informationen zur Code Coverage angezeigt. Test Cases respektive Test Suites muss man selber erstellen – Zend Studio erstellt über den Dialog zum Anlegen neuer Dateien nur sehr einfache Gerüste. Das Ausführen der Test Cases respektive einer Suite erfolgt beispielsweise über das Kontextmenü und den Menüpunkt «Run as...» und die Auswahl «PHPUnit Test».
Zur Kollaboration ist Unterstützung für CVS und Subversion integriert, die man bereits aus dem alten Zend Studio kennt. Allerdings sind beide funktional nun deutlich besser bestückt als früher und erlauben nebst den grundlegenden Operationen auch das Vergeben von Properties und Keywords.
Wie man sieht, hat Zend Studio nebst der Umstellung auf Eclipse einige Neuerungen erfahren, die mancher Entwickler wie die Integration von PHP Unit schon lange herbeigesehnt hat. Abhilfe schafft hier auch die Nutzung von Eclipse, da sich damit vermisste Komponenten nachladen lassen. Natürlich bleiben weiterhin Wünsche offen, beispielsweise Unterstützung für Continous Integration oder andere Unit-Testing-Werkzeuge.
Die Umstellung auf Eclipse hat an einigen Stellen für mehr Qualität gesorgt, beispielsweise bei der Integration von Subversion. Andererseits ist die Bedienung gewöhnungsbedürftig und nicht so intuitiv, wie man dies gerne hätte. Eclipse dürfte auch die teils sehr miese Performance mitverschulden. Beim alten Zend Studio ruckelte und hakelte es deutlich weniger. Ärgerlich ist auch, dass einige Komponenten einfach defekt sind. So wollte beispielsweise der Profiler partout keinen Time Division Chart erzeugen, der einem sagt, wie viel Zeit der Ausführung auf welches Script entfällt. Statt dessen beglückt einen Zend Studio for Eclipse mit Fehlermeldungen.