HOW-TO: Der Autovervollständigung auf die Sprünge helfen und die eigene Produktivität um ca. 170% steigern

Veröffentlicht am 17.08.2010 von jkuensebeck in der Schublade Magento, Magento-Templates | Tags: , , , | 2 Kommentare »

Da ich der Meinung bin, dass das Lesen von Dokumentationen Verschwendung meiner wertvollen Zeit ist, lasse ich das lieber von anderen erledigen, z.B. meiner IDE (d.h. momentan Netbeans, mit PDT für Eclipse funktioniert der ganze Spass aber genauso).

Die Autovervollständigung der IDE

Meistens funktioniert die Autovervollständigung bei der Magento-Entwicklung ja recht gut, wenn ich z.B. in einem eigenen Controller

$this->getRequest()->getP[CTRL+SPACE]

tippe, schlägt mir netbeans, wie es sich gehört,

$this->getRequest()->getParam($key, $default);

vor.

und wo sie versagt:

Das funktioniert aber nicht immer: Wenn netbeans den Kontext, in dem ich mich befinde nicht analysieren kann, gibt es keine ober nur sehr allgemeine Vorschläge:

$product = Mage::getModel('catalog/product');
$product->get [CTRL+SPACE]

liefert magere 13 Möglichkeiten, obwohl es weitaus mehr Methoden in der Klasse Mage_Catalog_Model_Product gibt, wie man sich schnell mit einem Blick in den Sourcecode überzeugen kann. Netbeans erkennt am Rückgabewert der Methode getModel(), dass es sich bei der zurückgegebenen Instanz um eine von Mage_Core_Model_Abstract abgeleitete Klasse handelt, welche aber genau, kann Netbeans natürlich nicht ableiten.

Type-Hints for the rescue

Netbeans weiss Bescheid

Hier helfen wir mit einem Type-Hint-Kommentar nach. Type-Hint-Kommentare sind eine spezielle PHPDoc-Syntax um den Typ einer lokalen Variablen explizit anzugeben.

Der äußerst gewünschte Nebeneffekt ist, dass Netbeans nun auf Basis des angegebenen Typs die Autovervollständigung generiert:

$product = Mage::getModel('catalog/product');
/* @var $product Mage_Catalog_Model_Product */
$product->get [CTRL+SPACE]

Und tada: Netbeans weiss, was wir wollen!

Templates schreiben lassen

Noch viel nützlicher ist die Methode bei der Magento-Template-Erstellung: Hier haben die Magento-Entwickler ja beinahe mitgedacht, und haben meistens oben im Template das zugehörige Block-Model in einem @see-Kommentar notiert. Wenn man in einem Template gerade nicht weiss, welche Methoden, einem zur Verfügung stehen, ergänzte man einfach den @see-Kommentar um einen Type-Hint-Kommentar. Dass die gehintete Variable zufällig $this ist, stört Netbeans nicht weiter:

<?php
/**
* Shopping cart template
*
* @see Mage_Checkout_Block_Cart
*/
/* @var $this Mage_Checkout_Block_Cart */
?>
<div>
<h3><?php echo $this->getQ [CTRL+SPACE] ?></h3>
// ...

Fazit

Den minimalen zusätzlichen Aufwand, lokale Variablen zu kommentieren, hat man spätestens nach dem zweiten Editieren der Datei wieder raus. Außerdem hilft der Type-Hint nicht nur der Entwicklungsumgebung, sondern auch dem Entwickler, den Überblick zu behalten.

Also: Machen! Immer!


2 Kommentare zu “HOW-TO: Der Autovervollständigung auf die Sprünge helfen und die eigene Produktivität um ca. 170% steigern”

  1. 1 Lesetipps KW34 | Magento, RedDot, Wordpress - webguys.de sprach am 27.08.2010 um 17:39:

    [...] lässt sich mit dem Artikel von Mage::log ein wenig steigern. Dort wird erklärt wie man seine Entwicklungsumgebung richtig einstellt damit auch Autovervollständigung korrekt [...]

  2. 2 immenitug sprach am 29.08.2011 um 15:27:

    was ich suchte, danke