Navigation


Suche



Nichts gefunden?
Suche mit erweiterten Optionen.

Anzeigen



Werbung

Kfz Ersatzteile
CMS Software Preise
Datenrettung
SEO Beratung
Baufinanzierung

PN-Entwicklung mit Eclipse und PDT

Donnerstag, 01. November 2007, 9 Kommentare

geschrieben von
CMS Allgemein : Vor einiger Zeit habe ich über die Entwicklung mit phpEclipse berichtet. Seit einiger Zeit gibt es auch bei Eclipse selbst ein PHP-Plugin, genannt PDT (PHP Development Tools), das aktiv gepflegt wird. Zeit, sich das einmal näher anzuschauen icon_smile

Installation

Als erstes muss Eclipse Europa heruntergeladen werden, von den verfügbaren Paketen reicht die schlanke Variante aus (Eclipse IDE for Java Developers).

Nachdem dieses Archiv entpackt und Eclipse gestartet wurde, werden zuerst einmal verschiedene Erweiterungen installiert. Über das Menü Help > Software Updates > Find and Install wird ein Assistent gestartet. Dort wird Search for new features to install ausgewählt und auf der nächsten Seite über den Button New Remote-Site die folgenden Update-Seiten hinzugefügt:

  • PDT: http://download.eclipse.org/tools/pdt/updates/
  • Zend Debugger: http://downloads.zend.com/pdt/
  • Subclipse für SVN-Support: http://subclipse.tigris.org/update_1.2.x

Nun die angelegten Update-Sites sowie außerdem die Europa Discovery Site per Checkbox aktivieren und fortfahren. Auf der nächsten Seite des Assistenten können nun die genannten Features ausgewählt werden. PDT benötigt die Eclipse WST (Web Standard Tools), das über den Button Select Required automatisch selektiert werden kann.

Nach der Installation aller Erweiterungen wird Eclipse neu gestartet und es kann losgehen. Ich habe mir als allererstes ein Testprojekt über File > New > Project... > PHP > PHP Project angelegt, in dem ich ein wenig mit simplen PHP-Befehlen herumgespielt habe.

Tastenkürzel

Die meisten Shortcuts sind ähnlich wie in der Java-Entwicklung. Über Help > Help Contents findet sich das PDT-Handbuch, in dem sich komplette Listen der verfügbaren Tasten abrufen lassen. Zu den wichtigsten gehören mit:

  • STRG+Shift+F7 kommentiert die aktuelle Zeile aus
  • Wenn der Cursor in einer Funktion liegt, springt F3 zu deren Deklaration
  • STRG+Space aktiviert die Code-Vervollständigung

Wie schon bei phpEclipse habe ich mir erst einmal die beiden Shortcuts angepasst, um wie im Firefox mit STRG+Tab bzw. STRG+Shift+Tab zwischen den offenen Tabs zu wechseln. Dies kann unter Window > Preferences > General > Keys bewerkstelligt werden (Gruppe "Windows", Name "Next/Previous Editor"). Das Schließen eines Tabs liegt bereits auf STRG+W, wie man es im Firefox gewohnt ist.

Projektorganisation

PDT erlaubt die Spezifikation projektspezifischer Include-Pfade. Daher habe ich ein Projekt mit dem Core von .8 angelegt und ein Projekt für jedes Modul. Um nun auch in den Modulprojekten die PN-Befehle bekannt zu machen, reicht es aus, im Kontextmenü unter Properties --> PHP Include Path --> Required projects das Core-Projekt einzutragen.

Coding Style

Anschließend habe ich in den Einstellungen (Window > Preferences) ein paar kleinere Anpassungen vorgenommen, damit PDT etwas mehr den Coding-Richtlinien von PostNuke folgt. In der Sektion PHP > Formatter habe ich die Einrückung von Tabs auf Spaces umgestellt mit einer "Indentation size" von 4. Ferner habe ich unter PHP > Editor > Typing das Häkchen bei "Close PHP Tag" entfernt, was den aktuellen Konventionen von PN .8 (und auch Zend) entspricht.

Code-Templates

PDT bringt eine ganze Reihe an netten Templates mit, wie man sie aus der Java-Entwicklung aus Eclipse kennt. Eine Übersicht findet sich in den Einstellungen unter PHP > Templates. Zum Beispiel kann man "fnc" eintippen, gefolgt von STRG+Space. Daraufhin wird das Kürzel automatisch durch einen Funktionsrumpf ersetzt. Bei Templates, die mit Argumenten arbeiten, werden sogar die zuletzt im Code benutzten und passenden Variablen benutzt, die der nebenstehende Screenshot anhand einer foreach-Schleife zeigt. An dieser Stelle lassen sich sicherlich eins, zwei nette PostNuke-spezifische Templates finden, zum Beispiel könnte "pnr" automatisch den Code erzeugen, um eine pnRender-Instanz zu bekommen und ein Template zu "fetchen" icon_wink .

Smarty

Ein Problem ist, dass der HTML-Validator nicht mit den pnRender-Tags klarkommt, so dass alle Templates erst einmal invalide sind. PDT hat bereits eine grundsätzliche Unterstützung für Smarty angekündigt. Es wird neben einer Syntax-Hervorhebung auch einen Content-Assistent für Templates geben. Aber auch jetzt schon existiert eine Erweiterung um Smarty mit PDT zugänglich zu machen. Auf dieser Seite befinden sich zwei schöne Screenshots und außerdem unten eine Jar-Datei für Eclipse 3.3, welche herunterzuladen und in das Verzeichnis plugins/ der Eclipse-Installation zu kopieren ist. Nach einem Neustart von Eclipse ist das Plugin aktiv und unter Window > Preferences > Smarty Editor lassen sich sogar die Smarty-Delimiter auf die von PostNuke benutzten Zeichen verändern (siehe Abbildung rechts). Allerdings werden HTML-Dateien per Doppelklick immer noch mit dem HTML-Editor geöffnet. Dieses Verhalten kann in den Einstellungen unter General > Editors > File Associations angepasst werden, wo für ".htm" und ".html" jeweils der Smarty-Editor hinzugefügt und als Default deklariert werden sollte. Wie die folgenden Bilder zeigen, funktioniert es grundsätzlich, macht aber noch Validierungsprobleme im HTML, weil unsere Smarty-Tags eben auch als HTML-Tags angesehen werden können. Die Validierung kann zwar deaktiviert werden, aber vielleicht gibt es ja noch einen Kniff um auch dieses Problem in den Griff zu bekommen...

Erweiterungen

Das Debugging habe ich noch nicht getestet, was aber auch daran liegt, dass ich mir erst mal wieder einen anständigen Testserver aufsetzen muss. Neben dem Zend Debugger wird auch XDebug unterstützt, aber anscheinend nur sekundär, weswegen es mit Zend wahrscheinlich weniger Probleme gibt.

Um auch für JavaScript mehr Unterstützung zu bekommen, bietet sich JSEclipse von Adobe an. Dieses besitzt sogar Support für Prototype und andere moderne JS- bzw. Ajax-Frameworks.

Eine weitere nützliche Erweiterung ist MyLyn. Sie erlaubt die direkte Integration von Bugtrackern in Eclipse. Funktioniert leider mit unserem NOC noch nicht, aber mit vielen verschiedenen Systemen wie Trac oder BugZilla, so dass es wahrscheinlich mittelfristig auch für PN interessant wird. Sogar Subclipse kann damit kombiniert werden, so dass sich Commits und Bug-Nummern in Verbindung setzen lassen. Hier noch ein kleiner Screenshot, wie MyLyn in der Praxis aussehen kann.

Was bleibt?

Auf mich hat PDT bisher einen im Vergleich zum Vorjahr wesentlich ausgereifteren Eindruck gemacht. Als nächstes werde ich eine Testseite aufbauen um den laufenden Betrieb sowie das Debugging zu testen. Im Anschluß daran möchte ich dann versuchen mit Ant oder Maven ein Remote-Deployment zum Server zu realisieren.

Mister Wong iconTechnorati iconDigg icondel.icio.us iconma.gnolia iconFurl iconNewsvine iconReddit iconYahoo MyWeb iconBlinkbits iconGoogle iconSimpy iconBlogmarks icon

Kommentare

Nur angemeldete Benutzer dürfen Kommentare verfassen.

Zur Registrierung/Anmeldung

Cool!

Danke für den Artikel. Letztens auf dem Kieler WebMontag hat schon jemand PDT vorgestellt. Das sah sehr cool aus, ich habe mich aber gefragt, ob man da auch mit Postnuke vernünftig mit arbeiten kann. Nach diesem Artikel, würde ich sagen: Ja! icon_wink

Bei der Präsentation wurde übrigens auch gezeigt, wie das Debugging funktioniert. Man muss halt den Zend-Debugger installieren und das ist es eigentlich schon. Dann kann Eclipse alles, was son Debugger können sollte.

Ich denke, für jeden der professionell mit Postnuke entwickeln will, ist ein System wie dieses eine unglaubliche Erleichterung. Ich werde es mir demnächst mal anschauen. Geil ist ja schon, dass man nicht mehr jeden Befehl nachschlagen muss.

kaffeeringe.de am 01.11.2007 um 15:05 Uhr
 

Danke !

Das sind Beiträge die Spaß machen, sie zu lesen.

Man fühlt sich sofort animiert das auszuprobieren.

Marvel am 01.11.2007 um 16:44 Uhr
 

Hört sich gut an

Ich bin auch seit einiger Zeit am überlegen von phpeclipse auf PDT umzusteigen und wäre sehr an deinen/euren Erfahrungen mit dem Debugging interessiert, wenn das dann so weit ist.

Wenn das gut und stabil läuft würde ich auch gerne den Umstieg wagen.

Vorerst mal danke für die coolen Infos.

silversurfer am 02.11.2007 um 10:52 Uhr

Echt genial. Wird langsam Zeit, dass ich mich mit Eclipse auseinandersetze. Spart definitiv eine Menge Zeit.

Nur schade: Bei mir versagt das Smarty-Plugin, weil die Eclipse-Version anscheinend nicht korrekt ist. (3.3.1.1). Eigentlich sollte das Plugin ja für 3.3 sein, obwohl in der CONF merkwürdigerweise auch eine andere Version (hier 3.2) angegeben ist. Mal schauen....

Herr.Vorragend am 04.11.2007 um 01:50 Uhr

Webinar

PHP Development Tools (PDT) 1.0 Overview, Yossi Leon (Zend)

This webinar will include a short history about the PHP Development Tools framework project, some statistical information (downloads, committers, bugs) and a demonstration of the project. The demonstration includes the different perspectives (PHP and PHP Debug) and the different views under each perspective. We will go through the creation of a PHP project, a PHP file and a debug session, where we will illustrate the debug features. During the presentation we will also see the relations to the WTP project which the PHP project is based on.

Total running time 59:05 minutes

kaffeeringe.de am 04.11.2007 um 14:04 Uhr

Danke, Axel... endlich hat das mit Eclipse mal auf Anhieb funktioniert.

jn am 11.11.2007 um 17:53 Uhr

Hallo

bin schon vor einiger Zeit auf PDT umgestiegen. Man kann damit Postnuke und Module entwickeln, allerdings muss man dann Eclipse schon ordenltich speicher gönnen. Das PHP-Modell baut er bei mir gar nicht auf, wenn ich eclipse mit weniger als 512MB starte. Auch so wird das eclipse, wenn man eine komplette PN Installation im Workspace hat recht träge. IMHO liegt das wohl an der grossen Anzahl an Dateien.

phpeclipse war da definitiv genügsamer.

bolbit am 12.11.2007 um 09:24 Uhr

Aktuelle Java-Version benötigt

Mein oben erwähntes Problem ist gelöst. Ich hatte einfach nur eine zu alte Javaversion installiert. shhh

Herr.Vorragend am 19.11.2007 um 19:50 Uhr