Facebook
Twitter
Google+
Kommentare
21

Eclipse Templates

Da letzte Woche der Artikel über die Eclipse Validatoren anscheinend gut ankam, möchte ich noch ein paar Dinge über Eclipse loswerden. Dieses mal ist es vielleicht nicht ganz so ein Geheimtipp, wie im letzten Artikel, aber trotzdem interessant und hilfreich. Es gibt eigentlich nur einen Grund, warum ich diese Eclipse Technik, die ich vorstellen will verwende. Ich bin faul! So wie ihr wahrscheinlich alle auch. Ein Freund meinte mal „Work smart not hard“, das passt ganz gut. Wenn man sich also das Leben erleichtern kann, dann sollte man es auch machen.

Wenn man Software entwickelt, dann gibt es immer wieder Codefragmente, die man öfters benutzt. Foreach wäre so ein Beispiel. Wenn man in Eclipse fore eingibt und dann kurz wartet erscheint schon die Autovervollständigung und man kann die IDE den Rest machen lassen. Die meisten einfachen und übergreifenden Templates, so nennt man sie in Eclipse, sind schon standardmäßig im System integriert, meist gibt es aber projekt- oder frameworkspezifische Codeschnipsel, die eben noch nicht eingespeichert sind. Vielleicht sowas wie ein Standard-Controller in einem MVC-Framework oder die Instanzierung eines Context-Objektes in einem anderen. Erstellen eines Singletons sieht auch immer sehr ähnlich aus. Euch wird schon was einfallen.

In Eclipse ist es ganz einfach so was einzurichten. Wir gehen jetzt mal davon aus, dass ihr PDT verwendet, ansonsten findet ihr den Template-Mechanismus an einer anderen Stelle. Also fangen wir an, wir öffnen die Preferences und wechseln zu PHP > Editor > Templates > New.

Einfach so ausfüllen, wie ihr es in dem Bild seht. Ihr könnt natürlich jetzt schon anfangen euren eigenen Beispielcode zu verwenden. Auf OK drücken und zurück zum PHP-Editor. Wenn ihr jetzt log tippt, dann müsste euch die Autovervollständigung schon vorschlagen, dass ihr doch das Template verwenden könntet. Das machen wir dann auch und schon ist steht da „Logger::getInstance()->log();“. Hervorragend.

Jetzt will man natürlich noch, dass der Cursor genau zwischen den letzten zwei Klammern erscheint, wenn man den Shortcut benutzt hat. Auch kein Problem. Dann schreiben wir einfach in unserem Template „Logger::getInstance()->log(${cursor}) ;“ . Auch schon wieder gelöst das Problem. Natürlich könnt ihr auch den „Insert Variable“ Knopf nutzen und schauen, was ihr da alles eintragen könnt. Es gibt aber auch Variablen, die dort nicht aufgeführt sind. Ihr könnt nämlich eigene verwenden. Dazu schauen wir uns mal das Foreach Beispiel an, von dem wir vorhin gesprochen haben. Hier steht im Pattern-Feld:

foreach (${dollar}${array_variable} as ${dollar}${variable}) {
  ${cursor};
}

${array_variable} wäre hier so ein Beispiel.Eclipse kennt diese natürlich nicht, wenn ihr aber fore eingebt, weiß das System, dass dort ein Platzhalter drinnen steht, der gefüllt werden soll. Ganz komfortabel könnt ihr dann zwischen den auszufüllenden Feldern „durchTABen“.

Das war auch schon der erste kurze Überblick über dieses Feature. Ich hoffe es gab unter den Lesern jemanden, der damit mal rumspielen wird.

Über den Autor

Nils Langner

Nils Langner ist der Gründer von "the web hates me" und auch der Hauptautor. Im wahren Leben leitet er das Qualitätsmanagementteam im Gruner+Jahr-Digitalbereich und ist somit für Seiten wie stern.de, eltern.de und gala.de aus Qualitätssicht verantwortlich. Nils schreibt seit den Anfängen von phphatesme, welches er ebenfalls gegründet hat, nicht nur für diverse Blogs, sondern auch für Fachmagazine, wie das PHP Magazin, die t3n, die c't oder die iX. Nebenbei ist er noch ein gern gesehener Sprecher auf Konferenzen. Herr Langner schreibt die Texte über sich gerne in der dritten Form.
Kommentare

21 Comments

  1. Die ersten Templates die ich sofort anpasse sind die zum erstellen einer neuen PHP Datei und zum erstellen einer Klasse. Dabei füge ich die „wichtigen“ PHPDoc Blöcke ein und z.B. für die auto-props vom SVN ein $Id$ Platzhalter, damit ich diesen nicht vergesse.

    Reply
  2. Bin zwar mittlerweile begeisterter Netbeans Nutzer, aber diese Code Templates haben es mir sehr angetan. In Netbeans kann ich diese Dinger zum Glück genauso verwenden. Kürzel tippen, Shift+Space und gut ist. Ich habe mir angewöhnt, fast alles, was ich mehr als zwei mal tippen müßte, als Code Template zu definieren. 😉

    Reply
  3. @ Mario

    Wo versteckt sich das den in Netbeans?
    Der Artikel heute hat mich darauf gebracht, wie komfortabel das mit dem ZS war:(

    Aber im Netbeans konnte ich es bisher noch nirgendwo finden

    Reply
  4. @Christian: Das ist seltsam. Kann dir da leider auch grad nicht helfen, wenn ich heute Abend zuhause von schau ich’s mir noch mal an, habe hier nur ein Zend Studio und ich weiß nicht, ob alles identisch ist.

    Reply
  5. @ragtek: Finden hat was mit Suchen zu tun 🙂 (Insider)

    Mal ehrlich – für Zwecke wie foreach sehe ich den Sinn nicht. Kein echter Programmierer soll mir erzählen, er wäre dort mit Templates schneller! Zumal man ja doch noch die Variablen eintragen muss. Das Template spart mir also ein paar Klammern, erfordert dafür aber Wartezeit (oder Shift+Space), Herumgetabbe und bei Netbeans leider auch noch Nachbearbeiten der Einrücklogik.

    Logger::getInstance.. sollte mit Codevervollständigung ebenso schnell gehen, oder?

    Reply
  6. @nikosch
    Klar, jeder sollte so tippen, wie er möchte. Ich finde gerade beim Zend Framework und Netbeans so viele Einträge bei der Codevervollständigung, wau bis ich mit den Pfeiltasten dort angekommen bin, oder vielleicht sogar noch die Maus in die Hand nehmen muß. 😉 Da ist z.B. ein log und Shift+Space wesentlich schneller. Und mit der Einrückung habe ich hier mit Netbeans 6.9 keine Probleme, der Cursor springt auch gleich dahin, wo er hingehört.

    Reply
  7. @ragtek
    Hast du bei der Installation eventuell Feature on Demand aktiviert gelassen? Ist Standard. Dann schau mal unter Tools/Plugins/Installed ob auch alle aktiviert sind. Eventuell hängt’s damit zusammen. Die Code Templates sind schon einige Versionen dabei…

    Reply
  8. Keine Ahnung ob das hier mit Quellcode klappt. Ich hatte mir mal dieses Ding gebaut, unter „gs“ für getter-setter:


    /**
    * ${name} local store
    * @var ${vartype}
    */
    private $$_${varname};

    /**
    * ${name} getter
    *
    * @return ${vartype}
    */
    public function get${name}()
    {
    return $$this->_${varname};
    }

    /**
    * ${name} setter
    *
    * @param ${vartype} $$${varname} ${name}
    */
    public function set${name}(${vartype} $$${varname})
    {
    $$this->_${varname} = $$${varname};
    }

    Nach dem Einfügen kann man mittels tab die Felder ausfüllen. Nutze Eclipse.

    Reply
  9. Hm, ist ganz nett, aber in Eclipse meiner Ansicht nach nicht optimal gelöst.

    Manche Texteditoren (z.B. Textmate oder jEdit) bieten IMHO bessere Snippet-Lösungen an.

    @nikosch:

    Doch, das kann ich Dir erzählen.

    Ich kann Snippets in Textmate oder jEdit definieren, die mir nach:

    fe

    diesen Code produzieren:

    foreach($items as $item) {

    }

    Und dies ist nur ein einfaches Beispiel. Und wenn Du in der Lage bist, schneller diesen Code per Hand zu schreiben als ich drei Tasten drücken kann, bist Du mein Held … 😉

    Gruß,
    klg

    Reply
  10. @klg Optimale Lösungen in einer IDE – das möchte ich mal sehen :). Mit Assembler geschriebene Texteditoren sind definitiv schneller wenn man tippt als Eclipse. Und die meisten haben auch Snippets, klar. Jedes Tool hat so seine Stärken und Schwächen.

    Reply
  11. @hakre:

    > Mit Assembler geschriebene Texteditoren sind
    > definitiv schneller wenn man tippt als Eclipse.

    Na, ich denke, die wenigsten Editoren werden in Assembler geschrieben sein. 😉

    jEdit ist übrigens – wie der Name schon andeutet – auch in Java implementiert.

    > Und die meisten haben auch Snippets, klar.
    > Jedes Tool hat so seine Stärken und Schwächen.

    Mir ging es eher um den Unterschied „ctrl-space … x-mal Pfeil runter … Return“ gegenüber z.B. „fe TAB“ …

    Gruß,
    klg

    Reply
  12. Als „Ideensammlung“ sicher sinnvoll, aber sonst IMHO eher unbrauchbar.

    Jeder hat andere Codestandards und andere Vorlieben für Variablenbezeichnungen.

    Reply

Leave a Comment.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen