JetBrains WebIDE: ¿Sugerencias de tipo de variable PHP?

81

¿Hay alguna manera de insinuar a WebIDE que una variable tiene algún tipo? Tengo que iterar una matriz de objetos y no hay autocompletado disponible. Esto ayuda en ZendStudio:

/* @var ClassName $object */

Sé que hay una función en JetBrains para declarar una matriz de objetos:

/**
 * @return ClassName[]
 */

Pero esto solo funciona con el tipo de retorno de la función.

kolypto
fuente
Funciona con matrices. ¿Funciona con ArrayIterators que iteran sobre un tipo específico?
redestructa

Respuestas:

144

/* @var ClassName $object */es un comentario PHPDOC no válido y no se analiza en la versión actual de Web IDE. Utilice asteriscos dobles para que funcione:

/** @var ClassName $object */

Además, se puede realizar anotaciones $arrayen foreach($array as $var)con /** @var ClassName[] $array */y $varescribir será deducido automáticamente.

Alexey Gopachenko
fuente
no sabía sobre la notación de corchetes
SandorRacz
2
Pregunta relacionada: Mi clase PHP usa un getter mágico para una variable y quiero vincular esa variable getter a un objeto Class, ¿alguna idea de cómo hacerlo? Como no puedo definir la variable en mi clase.
Sanket Sahu
Wow ... solo busqué en Google para divertirme y realmente no hay esperanza de que esto realmente sea una cosa ... ¡Nunca estuve tan equivocado en mi vida y estoy feliz de haberme equivocado! Esta característica es genial, ¡gracias! :)
Cagatay Ulubay
29

Como ya se señaló, PhpStorm usará bloques phpdoc regulares:

/** @var ClassName $object */

Sin embargo, desde 2.1 también admite anotaciones Netbeans / Eclipse / Zend @var :

/* @var $object ClassName */

Tenga en cuenta que el comentario comienza con en /*lugar de /**(por lo tanto, no aparecerá si genera documentación real con phpdoc). Además, los argumentos se intercambian, aunque PhpStorm acepta cualquier orden:

/* @var ClassName $object */

Por último, pero no menos importante, pueden preceder a casi cualquier línea de código arbitraria (técnicamente, los bloques phpdoc están restringidos a ciertos elementos).


Edición: a partir de 2019, las anotaciones Netbeans / Eclipse / Zend @var parecen estar en su mayoría abandonadas. NetBeans 11 ya no los admite y, en general, no son compatibles con otros IDE. Sugiero usar la otra sintaxis.

Álvaro González
fuente