JetBrains WebIDE: Hinweise auf PHP-Variablentypen?

80

Gibt es eine Möglichkeit, WebIDE darauf hinzuweisen, dass eine Variable einen Typ hat? Ich muss ein Array von Objekten iterieren, und es ist keine automatische Vervollständigung verfügbar. Dies hilft in ZendStudio:

/* @var ClassName $object */

Ich weiß, dass JetBrains eine Funktion zum Deklarieren einer Reihe von Objekten enthält:

/**
 * @return ClassName[]
 */

Dies funktioniert jedoch nur mit dem Rückgabetyp der Funktion.

kolypto
quelle
Es funktioniert mit Arrays. Funktioniert es mit ArrayIteratoren, die über einen bestimmten Typ iterieren?
Redestructa

Antworten:

143

/* @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 mit Anmerkungen versehen $arrayin foreach($array as $var)mit /** @var ClassName[] $array */und $varwerden die Namen automatisch abgeleitet.

Alexey Gopachenko
quelle
wusste nicht über die eckige Klammer Notation
SandorRacz
2
Verwandte Frage: Meine PHP-Klasse verwendet Magic Getter für eine Variable und ich möchte diese Getter-Variable an ein Class-Objekt binden. Gibt es eine Idee, wie das geht? Da ich die Variable in meiner Klasse nicht definieren kann.
Sanket Sahu
Wow .. nur zum Spaß gegoogelt und wirklich keine Hoffnung, dass dies tatsächlich eine Sache sein wird .. Ich habe mich in meinem Leben noch nie so geirrt und bin froh, dass ich mich geirrt habe! Diese Funktion ist so cool, danke! :)
Cagatay Ulubay
29

Wie bereits erwähnt, verwendet PhpStorm reguläre Phpdoc-Blöcke:

/** @var ClassName $object */

Seit 2.1 werden jedoch auch Netbeans / Eclipse / Zend @var-Annotationen unterstützt :

/* @var $object ClassName */

Bitte beachten Sie, dass der Kommentar /*eher mit als beginnt /**(daher wird er nicht angezeigt, wenn Sie mit phpdoc eine tatsächliche Dokumentation erstellen). Außerdem werden die Argumente ausgetauscht, obwohl PhpStorm jede Reihenfolge akzeptiert:

/* @var ClassName $object */

Last but not least können sie fast jeder beliebigen Codezeile vorangehen (technisch gesehen sind phpdoc-Blöcke auf bestimmte Elemente beschränkt).


Bearbeiten: Ab 2019 scheinen Netbeans / Eclipse / Zend @var-Anmerkungen größtenteils aufgegeben zu sein. NetBeans 11 unterstützt sie nicht mehr und im Allgemeinen werden sie von anderen IDEs nicht unterstützt. Ich schlage vor, die andere Syntax zu verwenden.

Álvaro González
quelle