2009-11-29 24 views
56

Y a-t-il un moyen d'indiquer à WebIDE qu'une variable a un certain type? Je dois itérer un tableau d'objets, et il n'y a pas d'auto-complétion disponible. Cela aide à ZendStudio:JetBrains WebIDE: type de variable PHP hinting?

/* @var ClassName $object */ 

Je sais qu'il ya une fonctionnalité dans JetBrains de déclarer un tableau d'objets:

/** 
* @return ClassName[] 
*/ 

Mais cela ne fonctionne qu'avec le type de retour de la fonction.

+0

Fonctionne avec les tableaux. Fonctionne-t-il avec ArrayIterators qui parcourent un type spécifique? – redestructa

Répondre

97

/* @var ClassName $object */ est un commentaire PHPDOC non valide et n'est pas analysé dans la version actuelle de Web IDE. Utilisez deux astérisques pour le faire fonctionner:

/** @var ClassName $object */ 

En outre, vous pouvez annoter $array à foreach($array as $var) avec le type /** @var ClassName[] $array */ et $var sera déduit automatiquement.

+0

ne connaissait pas la notation entre crochets – sanya

+2

Question connexe: Ma classe PHP utilise getter magique pour une variable et je veux lier cette variable getter à un objet Class, une idée de la façon de faire cela? Comme je ne peux pas définir la variable dans ma classe. –

+0

Wow .. juste googlé pour le plaisir et vraiment aucun espoir que ce sera réellement une chose .. Je n'ai jamais eu si mal dans ma vie et je suis heureux que j'avais tort! Cette fonctionnalité est tellement cool, merci! :) –

19

Comme déjà indiqué, PhpStorm utilisera des blocs réguliers phpdoc:

/** @var ClassName $object */ 

Cependant, depuis 2.1, il soutient également la Netbeans/Eclipse/Zend @var annotations:

/* @var $object ClassName */ 

S'il vous plaît noter le commentaire commence avec /* plutôt que /** (ainsi il n'apparaîtra pas si vous générez de la documentation avec phpdoc). En outre, les arguments sont permutés, bien que PhpStorm accepte toute commande:

/* @var ClassName $object */ 

Last but not least, ils peuvent précéder presque toute ligne arbitraire de code (techniquement, les blocs phpdoc sont limités à certains articles).