dracoblue.net

PDT Autovervollständigungstipps (für Agavi)

Mit den PDT (PHP Development Tools für Eclipse) kannst Du die meisten Variablen in PHP autovervollständigen. Das aber meist nur, sofern sie richtig definiert sind oder das php-doc richtig eingepflegt ist.

Dieser Artikel zeigt ein paar Tipps, wie Du auch in unklaren Situationen die Autovervollständigung eindeutig machen kannst. Wenn Du lediglich

die aktuellste Version von PDT aufsetzen möchtest, schau Dir bitte das andere Tutorial an.

Graste hat ein kleines Script veröffentlicht, welches dem gesamten (Agavi-)Projekt in Eclipse sagt, dass die Variablen $template, $ro, $rd usw. vom richtigen Typ definiert sind. Diese sind normalerweise in Agavitemplates verfügbar, werden aber via .xml beim Compile-Vorgang reinkompiliert und sind daher für Eclipse nicht sichtbar.

Hier meine leicht veränderte autocomplete.php:

<?php
exit();
$slots = array();
$template = array(); // agavi 0.11 standard
$t = array(); // agavi 1.0 standard
$tm = new AgaviTranslationManager();
$ro = new AgaviWebRouting();
$rq = new AgaviWebRequest();
$ct = new AgaviController();
$us = new AgaviSecurityUser();
$rd = new AgaviWebRequestDataHolder();
?>

Diese Datei einfach als autocomplete.php in Dein Projekt speichern und Eclipse wird diese Variablen standardgemäß mit dieser Klasse initialisiert vermuten und schon hat man die nette Autovervollständigung auch in Agavitemplates.

Wenn Du den Rückgabetyp für eine Funktion auch für einen bestimmten Typ (und damit autovervollständigungsfähig) definieren möchtest, brauchst Du nur die PHP-Docs richtig zu setzen. In diesem Beispiel gibt die Funktion test123() ein SomeClass-getyptes Element zurück:

/**
 * [strong]@return SomeClass[/strong]
 */
function test123() {
    /* ... */
}

Manchmal möchte man, dass eine Variable für einen bestimmten Scope den richtigen Typ hat. Das geht dann wie folgt:

if (false) $instance = new [strong]SomeClass[/strong]();

oder besser sogar

/* @var $instance [strong]SomeClass[/strong] */

und Eclipse wird die Variable $instance nun für eine SomeClass halten.

Hast Du weitere Tipps? Dann schreib sie bitte in die Kommentare!

In agavi, eclipse, open source, pdt for eclipse, php by
@ 23 Feb 2009, Comments at Reddit & Hackernews

Give something back

Were my blog posts useful to you? If you want to give back, support one of these charities, too!

Report hate in social media Campact e.V. With our technology and your help, we protect the oceans from plastic waste. Gesellschaft fur Freiheitsrechte e. V. The civil eye in the mediterranean

Recent Dev-Articles

Read recently

Recent Files

About