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.


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.


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.