Eine IDE für PHP 3
Die Suche nach einer geeigneten IDE ist nie einfach. Eine IDE ist weniger abhängig von ihrem Funktionsumfang, als vielmehr von dem Gefühl des Programmierers. Insbesondere für PHP bin ich seit rund 3 Jahren auf der Suche nach einer IDE, die mich wirklich rundum zufrieden stellt. Oder mir zumindest nicht in regelmäßigen Abständen auf die Nerven geht.
Es gibt durchaus einige IDEs für PHP. Jedoch gibt es kaum aktuelle Tests und Vergleiche dieser IDEs von Leuten, die Ihre IDE als No-Nonsense Arbeitstier sehen und nicht als hübsches Gadget. Also machte ich mich auf die Suche. Dieser Post stellt meine persönlichen Erfahrungen mit den aufgelisteten IDEs dar.
Der Test der IDEs entstand über einen längeren Zeitraum: jede IDE wurde mindestens zwei Wochen produktiv auf Live-Projekten getestet. Von kommerziellen IDEs wurde jeweils die Trial-Version getestet. Die Wahl einer IDE ist natürlich sehr subjektiv und eine Frage des persönlichen Stils. Folglich sind die Vorstellungen und gezogenen Schlüsse ebenfalls subjektiv und mit Vorsicht zu genießen.
Zend PDT (Version 1.0.2, Freeware, Eclipse-basiert)
Eclipse habe ich bis vor kurzem knapp 2 Jahre als tägliche PHP IDE eingesetzt. Zunächst mit PHPEclipse und, als dieses nicht mehr weiterentwickelt wurde, mit PDT. PDT an sich wurde dabei seit den frühen Betas immer wieder angetestet und zu 0.98 im produktiven Einsatz verwendet. Ich muss sagen, dass der Charme mit einem direkt von Zend unterstützten Produkt zu arbeiten sehr verlockend ist. Zumindest verspricht dies regelmäßige Betreuung und aktuelle Dokumentation bezüglich PHP.
In der Praxis ist jedoch leider nicht alles so charmant. PDT an sich macht nach wie vor einen sehr unfertigen Eindruck. Bugs und Probleme sind eher die Regel als die Ausnahme. Beispiel: Das Code Folding läuft gerne mal Amok. Insbesondere, wenn man Schritte rückgängig macht springt der Cursor Gott weiß wohin und das Code Folding klappt wild auf und zu. Alle 2-3 Stunden (auch gerne bei STRG-Z) verschluckt sich PDT und die Datei wird unbrauchbar. Die letzten Änderungen sind weg und entweder beendet sich Eclipse oder man muss die Datei schließen und wieder öffnen.
Die Funktionalitäten die funktionieren sind manchmal bedauerlicherweise unvollständig. So zum Beispiel die Codevervollständigung. Diese funktioniert nur für lokale und globale Klassen, nicht für Singletons. Bei abgeleiteten Klassenkonstrukten kommt es gelegentlich auch zu Problemen. Gerade von Zend hätte ich hier mehr erwartet.
Da es sich um Eclipse handelt, muss man zusätzlich zu den Problemen von PDT auch die von Eclipse selbst mit in Kauf nehmen. Zum Beispiel die Behäbigkeit der IDE. Es passiert regelmäßig, dass Eclipse sich eine Ruhepause gönnt und mal eben die Projekte im Workspace neu indexiert oder für eine Suche mal eben die IDE blockiert. Und wo wir schon bei der Suche sind, diese übersieht auch mal gerne Inhalte in Dateien. Aber gut, Eclipse hat ja schließlich auch einige Vorzüge.
Ein Vorzug ist die schier enorme Menge von Erweiterungen. Es gibt alle Arten von nützlichen Helferleins, die einem das Programmieren enorm erleichtern – vorausgesetzt man findet sie.
Fazit: Es hat einen Grund, wieso ich fast zwei Jahre Eclipse im produktiven Einsatz hatte. Es ist mächtig und kann (fast) alles, was man sich vorstellen kann. Aber es hat auch einen Grund, wieso ich unzufrieden bin: es ist instabil und zuweilen arg langsam. Aus diesem Grund auch die Suche nach einer neuen IDE. Wenn ich etwas besseres finde: sehr gut. Wenn nicht, nun, dann lässt es sich zur Not mit Eclipse ganz gut leben.
Gut:
- Direkte Unterstützung von Zend.
- Unterstützung von externen Entwicklern im Allgemeinen.
- Umfangreiche Erweiterungen.
Schlecht:
- Instabil, ab und zu auch mit Datenverlust.
- Unzuverlässige Inhaltssuche in Dateien.
- Keine Codevervollständigung von Singleton-Objekten.
- Zuweilen langsam.
Zend Studio Eclipse (Version 6, 356€, Eclipse-basiert)
Zend Studio ist die professionelle Version von PDT. Und um das gleich vorweg zu nehmen: es gibt keinen wirklichen Unterschied zu PDT. Na schön, es sind mehr Funktionalitäten enthalten, aber viele dieser Funktionalitäten lassen sich auch über herkömmliche Eclipse-Plugins bereitstellen – beispielsweise die SVN-Unterstützung oder (S)FTP-Transfer. Sämtliche Negativ-Punkte von PDT gelten allerdings auch für Zend Studio. Für 356€ bekommt man aber immerhin noch das “klassische” Zend-Studio dazu.
phpDesigner 2008 (Version 6.0.1.3, 39€)
Die Projektübersicht fand ich auf Anhieb seltsam: phpDesigner trennt nach Ordnern (in einem Fenster) und Dateien (in einem anderen Fenster). Wenn man nun auf einen Ordner klickt, erhält man dessen Dateien in dem Dateifenster. Dieses Prinzip ist mit von EditPlus her bekannt, aber nur weil ich es aus meinem kleinen Editor her kenne, heißt das nicht, dass ich dieses Verhalten von eine PHP-IDE erwarte. Alle anderen IDEs nutzen standardmäßig eine Baumstruktur – aus gutem Grund. Durch die Trennung von Ordnern und Dateien kann phpDesigner nicht mehrere Projekte gleichzeitig öffnen, da es keinen Root-Knoten eines Projektes gibt. Nicht schön.
Die GUI an sich ist abgesehen davon frei konfigurierbar, die Tabs lassen sich sliden, verstecken und beliebig docken. Im Gegensatz zu PhpEd aus mehrere Tabs pro Seite untereinander. Merkürdig hingegen ist die Anordnung der Datei-Tabs. Diese beginnen nämlich nicht über dem Editor-Fenster, sondern am linken Rand. Falls man also links Tool-Tabs positioniert hat, befinden sich die Datei-Tabs über den Tool-Tabs. Eher verwirrend.
Die Suche ist leider modal. Es gibt also weder Zwischenergebnisse, noch wären diese benutzbar, denn die IDE steht bei einer Suchanfrage komplett still. Ebenso unschön ist, dass man nicht nachvollziehen kann, was die Suche eigentlich gerade macht, also welche Dateien sie gerade durchsucht.
Nach Einstellungen für den Standard-Zeichensatz von Projekten sucht man vergebens. Man kann zwar den Zeichensatz global oder für einzelne Dateien festlegen, aber phpDesigner kennt nur ANSI (immerhin einstellbar), UTF8 und UTF-16.
Das kontextsensitive Syntax Highlighting ist hingegen sehr interessant. Auf Wunsch hebt phpDesigner nur die Codeblöcke hervor, die einen gemeinsamen Kontext haben. Also Beispielsweise einen Block php innerhalb eines HTML-Blocks hebt nur das PHP hervor. Wenn man im HTML-Block arbeitet wird der PHP-Block ausgegraut und das HTML hervorgehoben. Zunächst einmal nett für alte (read: obsolet, aber leider Live) Projekte, in denen noch PHP und HTML vermischt sind. phpDesigner versucht Kontexte automatisch zu erkennen und schaffte es auch Template-Definitionen von HTML zu unterscheiden und getrennt hervorzuheben, was hingegen auch aktuell noch interessant ist.
Es kann ja durchaus sein, dass manche meiner Kritikpunkte per Konfiguration abgeschwächt werden könnten. Allerdings ist die Hilfe wenig hilfreich und bestenfalls eine Gliederung zu einer richtigen IDE-Hilfe. Im Netz findet sich auch nicht viel Unterstützung zu dem Produkt. Selbst das Wiki des Herstellers bringt nicht viel bei Fragen.
phpDesigner lief die ganze Testzeit über stabil und es gab keine Abstürze oder verlorene Daten.
Fazit: Dicht dran ist auch vorbei. phpDesigner macht auf den ersten Blick einen sehr guten Eindruck und weiß auch in manchen Bereichen durchaus zu beeindrucken. Aber es sind die vielen Kleinigkeiten, die phpDesigner für mich aus dem Rennen werfen. Wer mit diesen zurechtkommt, den erwartet aber wahrscheinlich ein gutes Produkt.
Gut
- Codevervollständigung von Singleton-Objekten.
- Gute OOP-Unterstützung im Allgemeinen.
- Kontextbasiertes Sytax Highlighting.
Schlecht
- Projektbrowser geteilt nach Verzeichnissen und Dateien.
- Nur ein Projekt gleichzeitig geöffnet.
- Tab-Anordnung merkwürdig.
- Modale Suche
- Kein Standard-Zeichensatz für Projekte definierbar.
- Die Hilfe ist eher rudimentär.
NuSphere PhpED (Version 5.2, 199$)
Auf den ersten Blick wirkt NuSphere PhpED wie Visual Studio. Zugegeben, wie ein Visual Studio mit allen GUI-Features, Icon- und Tableisten aktiviert. Für Entwickler, die es lieber puristisch mögen lässt sich die IDE entsprechend einstellen: Tabs und Leisten sind vergleichbar mit VS2005 versteckbar, lassen sich beliebig andocken und sliden.
Eins fiel mir sofort auf: die Code Inspection schaffte es tatsächlich in Singleton-Objekte hineinzusehen. Folglich bekam ich bei diesen auch sofort alle Methoden und Variablen angeboten – sogar bei überladenen Singletons. Sehr schön. Allerdings ist die Umsetzung der Codevervollständigung doch sehr merkwürdig. In der Anzeige der verfügbaren Methoden steht zunächst, ob die Methode private oder public ist. Wozu? Wenn ich ein Objekt dieser Klasse habe, sollte alles angezeigte immer public sein. Anschließend steht der Name der Klasse. Ok, sinnvoll für vergessliche Programmierer oder jene ohne vernünftigen Code Style. Für die restlichen 90% unsinnig und Platzverschwendung. Und anschließend endlich die Methodennamen. Aber sobald man eine Methode auswählt wird diese in den Code eingefügt mit geschlossenen Klammern – selbst wenn die Anzeige richtig erkannte, dass die Methode Parameter hat. Eventuelle PHPDoc-Angaben zu den Methoden und Parametern ignoriert PhpEd. Ärgerlich.
Gut gefallen hat mir hingegen die Integration von einigen nützlichen Features. Zum Beispiel der DB Client, welcher eine Übersicht von SQL-Datenbankstrukturen bietet. Die Strukturen kann man direkt in das Code-Fenster ziehen. Ähnlich schön ist ein umfangreicher Code Navigatior, -Explorer und der FTP Client. So schön in die IDE integriert sieht man das selten.
Trotz auf der Webseite angepriesener “Full Unicode”-Unterstützung hatte ich zunächst Probleme mit Umlauten. Da wurde ISO 8859-1 gerne mal mit UTF-8 verwechselt, UTF-8 für Windows 1252 gehalten und Projekte mit mehreren Zeichensätzen wild durcheinandergeworfen. Nach einer (etwas längeren) Definitions- und Einstellungssitzung funktionierte alles einwandfrei. Ich nehme an, die Probleme entstehen nicht, wenn man Projekte von vorne herein mit PhpED entwickelt.
Eine böse Überraschung erwartet jeden, der für Redo das eigentlich normale STRG-Y bemüht. Auf dieser Tastenkombination liegt nämlich das in Visual Basic übliche “Zeile löschen”. Immerhin lassen sich auch die Tastaturkürzel konfigurieren – sogar mit Profilen von bekannten IDEs.
Im Einsatz war PhpED stabil. Es gab allerdings einen Absturz, als die Projektdateien von Hand per SVN aktualisiert wurden, während die Dateien im Editor geöffnet waren. Nicht schön, aber da sich das Problem nicht wiederholte, sehe ich das als Schluckauf.
Fazit: Ich denke NuSphere PhpED ist ein gutes Produkt und seinen Preis von 199$ wert, vorrausgesetzt man kommt mit der Art von PhpED zurecht. Wie man an den vielen kleinen Nitpicks sieht, komme ich das leider nicht. Also einen Blick wert, wenn auch einen differenzierten.
Gut
- GUI voll konfigurierbar.
- Codevervollständigung von Singleton-Objekten.
- Schöne Integration von nützlichen Funktionalitäten.
Schlecht
- Umsetzung der Codevervollständigung ist nicht durchdacht.
- Zeichensatzprobleme beim Import komplexer Projekte.
- Tastaturkürzel in der Standardeinstellung teilweise merkwürdig.
Komodo Edit (Version 4.3, Freeware, Mozilla-basiert)
Auf den ersten und zweiten Blick gefällt mir Komodo sehr gut. Es ist schnell, praktisch und macht das was es kann sehr gut. Unglücklicherweise kann es manchmal nicht alles, was ich brauche oder erwarte. Unter anderem lassen sich die Tabs (für Projektverwaltung etc) nicht frei verschieben oder andocken. Das ist heutzutage doch schon eher ungewöhnlich, insbesondere da das Mozilla-Framework so etwas ohne Probleme unterstützen würde. Das Code Folding faltet vom öffnenden Element bis zum nächsten Token nach dem schließenden Element. Wieso nicht nur bis zum schließenden Element? Darüber hinaus: Es gibt kein Folding von Kommentar-Blöcken und kein frei definierbares Folding.
Sobald jedoch die Funktionalität von Komodo unterstützt wird, tut sie das, was man will und noch viel mehr. Die Einstellungsmöglichkeiten sind vielfältig (jedoch mangelhaft dokumentiert), die IDE an sich stabil und schnell.
Es lassen sich dank Mozilla-Grundlage Erweiterungen bauen. Viele von diesen stellen auch einige der von mir vermissten Funktionalitäten bereit, beispielsweise ein Code Outline und TODO-Übersicht.
Fazit: Ich mag Komodo Edit. Es ist von den vorgestellten IDEs diejenige, die mir am besten liegt, auch wenn ich einige Fähigkeiten schmerzlich vermisse.
Gut:
- Komodo ist schnell. Das gilt für die Suche, als auch für Codevervollständigung, Projekt- und Dateiverwaltung und so weiter. Einzig die Syntax-Prüfung ist etwas behäbig, aber noch im Rahmen.
- Die Macro-Funktionalitäten sind großartig und intuitiv nutzbar. Änliches gilt für die Toolbox.
- Geringer Speicher- und CPU-Verbrauch.
Schlecht:
- Keine frei definierbaren Tabs. Komodo hat zwar die üblichen Tabs für Projektübersicht etc, aber diese sind jeweils fest definiert.
- Gewöhnungsbedürftiges Code Folding.
- Die Hilfe ist eher rudimentär.
- Eigener Code innerhalb von Singletons wird nicht erkannt. Folglich auch keine Codevervollständigung von Singleton-Objekten.
- Für die Syntax-Prüfung von PHP wird eine PHP-Installation benötigt. Eigentlich sollte das doch integiert sein, selbst wenn wir von ActiveState reden.
Weitere Kandidaten
Neben den genannten Kandidaten wurde noch PHPEdit in der Version “2.12.8.5755-stable-2007″ von Waterproof Software getestet. Der Test war jedoch nur kurz, denn es gelang mir nicht die Code Completion zu aktivieren. Weder für Variablen, noch für Funktionen, Klassen – sie wollte einfach nicht. Falls das ein versionsspezifisches Problem sein sollte, probiere ich die IDE vielleicht irgendwann noch einmal, aber so ist sie nicht zu gebrauchen.
Mit VS.Php konnte ich mich seltsamerweise nicht anfreunden, obwohl ich für Dektop-Programmierung Visual Studio sehr gerne einsetze. Komola/Jcx Software scheint sich alle Mühe gegeben zu haben PHP in Visual Studio zu integrieren, aber es funktioniert für mich einfach nicht. Ich mag VS, weil es mit simple und mächtige Werkzeuge zur Verfügung stellt, um Applikationen schnell und effizient zu programmieren. Bei PHP fehlen diese völlig. Sicher, IntelliSense ist nett mit PHP, aber kennt auch keine Singletons und greift bei einfachen Objekten auch nicht immer richtig. Insbesondere “Gehe zu Definition” versagt gerne mal. Die Suche ist modal und nicht gerade schnell, so dass VS.PHP einem gerne mal Zwangspausen verordnet, da es auch keine Möglichkeit gibt eine einmal angefangene Suche zu unterbrechen. Überhaupt reagiert VS.PHP subjektiv behäbiger als Visual Studio unter, sagen wir mal, C#. Als Pluspunkt ist die vollständig in deutsch verfügbare Oberfläche zu nennen. Kurz: ich weiß, was Visual Studio unter C++ oder C# leisten kann und bin von der Leistungsfähigkeit in Verbindung mit PHP schlichtweg enttäuscht.
PHP Studio 2008 von Cayoren Software wurde ebenfalls angetestet. Von meinem Eindruck her ist PHP Studio ein schneller, kleiner PHP-Editor, dem jedoch einige Features fehlen um ihn zu einer IDE zu machen. Zum Beispiel Remote Debugging oder Code Completion bei Klassen und Methoden. Für alle, die einen schnellen PHP-Editor ohne viel Overhead suchen kann PHP Studio aber die richtige Wahl sein.
Von Coda auf dem Mac hört man viel Gutes. Von dem was ich gesehen habe, ist es ein schneller und brutal effizienter Editor mit einem direkten Draht zu den Entwicklern. Nett, aber deshalb extra einen Mac kaufen? Eher nicht.
Finales Fazit
Die ernüchternde Nachricht (die sich jeder schon denken konnte): Es gibt sie nicht, die ideale PHP-IDE. Leider nicht einmal annähernd. Ich persönlich habe mich für Komodo Edit entschieden. Die IDE ist leistungsfähig, von jedem erweiterbar und läuft selbst auf einem eeePc noch aktzeptabel (etwas völlig undenkbares für beispielsweise Eclipse). Die von mir vermissten Features werden halbwegs durch Extensions abgedeckt. Und schließlich: ActiveState treibt Komodo Edit aktiv voran. Ebenfalls sehr erfrischend nach dem eher gemächlichen Tempo von Eclipse.
Die gute Nachricht für alle: Es gibt Auswahl. Für so ziemlich jeden Geschmack sollte etwas dabei sein, so dass jeder eine aktzeptable IDE finden sollte. Und auch wenn es keine eierlegende Wollmilchsau gibt, so ist ein bischen Auswahl nicht das schlechteste. Im Zweifel belebt Konkurrenz das Geschäft bzw. die Entwicklung und Weiterentwicklung von Lösungen.
Der Artikel ist keine 2 Tage online und schon habe ich zwei Antworten:
- Eine ist von der Marketingabteilung von NuSphere. Einiges Bedauern, viel Ermutigung, aber hey – immerhin regieren sie. Ich finde es ein gutes Zeichen, wenn man Interesse an seiner Nutzerbasis zeigt.
- Gleichfalls habe ich eine Mail von einem der Entwickler von VS.PHP bekommen. Er hat mir einige gute Ratschläge gegeben und einen Link zu einer Entwicklerversion von dem (bald erscheinenden) VS.PHP 2.5. Ich werde mir die neue Version in den kommenden Tagen anschauen, vielen Dank dafür.
[...] Wunde hat die Neuinstallation aber wieder aufgerissen: die Suche nach einer PHP IDE. Demnächst wird wohl Runde 2 folgen. Erster Kandidat wie gesagt Aptana. Stay [...]
[...] Im Moment ist mein Eindruck sehr gemischt und ich befürchte ja schon, dass es wieder auf eine längere Suche hinauslaufen [...]