web-dev-qa-db-fra.com

JetBrains WebIDE: PHP indice de type variable?

Existe-t-il un moyen d'indiquer à WebIDE qu'une variable a un certain type? Je dois parcourir un tableau d'objets, et il n'y a pas de complétion automatique disponible. Cela aide dans ZendStudio:

/* @var ClassName $object */

Je sais qu'il y a une fonctionnalité dans JetBrains pour déclarer un tableau d'objets:

/**
 * @return ClassName[]
 */

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

73
kolypto

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

/** @var ClassName $object */

De plus, vous pouvez annoter $array Dans foreach($array as $var) avec /** @var ClassName[] $array */ Et le type $var Sera déduit automatiquement.

122
Alexey Gopachenko

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

/** @var ClassName $object */

Cependant, puisque 2.1 il prend également en charge Netbeans/Eclipse/Zend @ annotations var :

/* @var $object ClassName */

Veuillez noter que le commentaire commence par /* plutôt que /** (ainsi il n'apparaîtra pas si vous générez une documentation réelle avec phpdoc). De plus, les arguments sont échangés, bien que PhpStorm accepte n'importe quel ordre:

/* @var ClassName $object */

Enfin et surtout, ils peuvent précéder presque n'importe quelle ligne de code arbitraire (techniquement, les blocs phpdoc sont limités à certains éléments).


Edit: à partir de 2019, les annotations Netbeans/Eclipse/Zend @var semblent être pour la plupart abandonnées. NetBeans 11 ne les prend plus en charge et en général, ils ne sont pas pris en charge par d'autres IDE. Je suggère d'utiliser l'autre syntaxe.

26
Álvaro González