2009-11-29 7 views
56

¿Hay alguna manera de indicar WebIDE que una variable tiene algún tipo? Tengo que iterar una matriz de objetos, y no hay finalización automática disponible. Esto ayuda en Zend Studio:JetBrains WebIDE: tipo de variable de PHP indirecta?

/* @var ClassName $object */ 

Sé que hay una característica en JetBrains para declarar una matriz de objetos:

/** 
* @return ClassName[] 
*/ 

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

+0

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

Respuesta

97

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

/** @var ClassName $object */ 

Además, se puede realizar anotaciones en $arrayforeach($array as $var) con /** @var ClassName[] $array */ y $var tipo se deducirá automáticamente.

+0

no sabía acerca de la notación de corchetes – sanya

+2

Pregunta relacionada: Mi clase de PHP usa un getter mágico para una variable y quiero unir esa variable getter a un objeto Class, ¿alguna idea de cómo hacer eso? Como no puedo definir la variable en mi clase. –

+0

Wow ... solo busqué en Google por diversión y realmente no hay esperanza de que esto sea realmente una cosa ... ¡Nunca estuve tan equivocado en mi vida y estoy feliz de haberme equivocado! Esta característica es genial, ¡gracias! :) –

19

Como ya se ha señalado, PhpStorm usará bloques PHPDoc regulares:

/** @var ClassName $object */ 

Sin embargo, desde la versión 2.1 también es ayuda para Netbeans/Eclipse/Zend @var annotations:

/* @var $object ClassName */ 

Tenga en cuenta los comentarios aperturas 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, que pueden preceder a casi cualquier línea arbitraria de código (técnicamente, bloques PHPDoc están restringidos a ciertos artículos).

Cuestiones relacionadas