2009-11-29 8 views
56

Gibt es eine Möglichkeit, WebIDE anzudeuten, dass eine Variable einen Typ hat? Ich muss ein Array von Objekten durchlaufen, und es ist keine automatische Vervollständigung verfügbar. Dies hilft bei Zend Technologies # Zend Studio:JetBrains WebIDE: PHP Variablentyp Hinting?

/* @var ClassName $object */ 

Ich weiß, dass eine Funktion in JetBrains gibt es eine Reihe von Objekten zu erklären:

/** 
* @return ClassName[] 
*/ 

Das funktioniert aber mit der Funktion des Rückgabetyp nur.

+0

Es funktioniert mit Arrays. Funktioniert es mit ArrayIterators, die über einen bestimmten Typ iterieren? – redestructa

Antwort

97

/* @var ClassName $object */ ist ein ungültiger PHPDOC-Kommentar und wird in der aktuellen Version von Web IDE nicht analysiert. Verwenden Sie doppelte Sternchen, damit es funktioniert:

/** @var ClassName $object */ 

Sie können aber auch $array in foreach($array as $var) mit /** @var ClassName[] $array */ und $var Typ mit Anmerkungen versehen werden automatisch abgeleitet werden.

+0

wusste nicht über die eckigen Klammern Notation – sanya

+2

Verwandte Frage: Meine PHP-Klasse verwendet Magic Getter für eine Variable, und ich möchte diese Getter-Variable an ein Objekt der Klasse binden, eine Idee, wie man das macht? Da ich die Variable in meiner Klasse nicht definieren kann. –

+0

Wow .. nur für Spaß gegoogelt und wirklich keine Hoffnung, dass dies tatsächlich ein Ding sein wird .. Ich war nie so falsch in meinem Leben und ich bin glücklich, dass ich falsch lag! Diese Funktion ist so cool, danke! :) –

19

Wie bereits ausgeführt, PhpStorm regelmäßige phpdoc Blöcke verwenden:

/** @var ClassName $object */ 

Da jedoch 2.1 auch für Netbeans/Eclipse/Zend Unterstützung der @var annotations:

/* @var $object ClassName */ 

Bitte beachten Sie die Kommentar beginnt mit /* anstatt /** (also wird es nicht angezeigt, wenn Sie mit phpdoc eigentliche Dokumentation generieren). Auch sind die Argumente ausgetauscht, obwohl PhpStorm jede Bestellung akzeptiert:

/* @var ClassName $object */ 

Last but not least, können sie fast jede beliebige Codezeile vorangestellt (technisch, phpdoc Blöcke werden auf bestimmte beschränkt).