Solo tengo curiosidad por saber si hay una forma en netbeans de dar pistas de tipo para variables regulares, de modo que intellisense lo capte. Sé que puede hacerlo para propiedades de clase, parámetros de función, tipos de retorno, etc. pero no puedo averiguar cómo hacerlo para variables regulares. Es algo que realmente ayudaría en situaciones en las que tiene un método que puede devolver diferentes tipos de objetos (como un localizador de servicios).
ex algo como:
/**
* @var Some_Service $someService
*/
$someService = ServiceLocator::locate('someService');
Cuando se usa $ someService después, netbeans proporcionaría todos los métodos disponibles definidos en la clase Some_Service.
Respuestas:
Una sola línea es todo lo que necesita:
/* @var $varName Type_Name */
Vea este artículo en el Blog PHP de NetBeans: https://blogs.oracle.com/netbeansphp/entry/defining_a_variable_type_in
fuente
$this->obj = $serviceLocator->get('obj');
si lo uso/* @var $obj Obj */
no funciona .../** @var Type_Name */
, ¿ves esta publicación ?vdoc
en la línea sobre la variable que va a documentar y luego presionarTab
y eso actuará como una macro para crear automáticamente las publicaciones de @johannes del bloque de documentos de arriba.Sé que esta es una pregunta anterior, pero estaba buscando una respuesta similar para Eclipse / Zend Studio y esto también lo resolvió.
** Sin embargo, tenga en cuenta que debe estar en una sola línea con la apertura y el cierre explícitamente en este estilo ...
/* @var $varName Type_Name */
No hay otros formatos ya sea ...
/** * @var $varName Type_Name */
o...
// @var $varName Type_Name
parecía funcionar en absoluto. Espero que ayude a alguien.
fuente
¿Está buscando documentar esas molestas variables mágicas ? (Lo hice; esta pregunta actualmente ocupa el primer lugar en Google. ¡Espero que esto ayude a alguien!)
La
@property
etiqueta le permite documentar variables php mágicas , aquellas implementadas usando__get()
y__set()
. La etiqueta debe usarse en la documentación inmediatamente anterior a la definición de la clase:/** * Class Contact * @property string $firstName * @property string $lastName */ class Contact extends Model { ...
Esta notación activa el autocompletado, probado en Netbeans 8.1 y PhpStorm 2016.1.
fuente
Según este informe de error , la sintaxis cambiará en NetBeans 9 :
/* @var $variable VarType */ // vdoc1 (legacy syntax) /** @var VarType $variable */ // vdoc (new syntax)
Además, vale la pena mencionar que puede agregar
[]
al nombre de una clase para indicar una matriz de objetos:/* @var $foos Foo[] */ $foos = // ... foreach ($foos as $foo) { // $foo will be hinted as Foo here }
Y no olvide su
use
declaración, por ejemplouse Foo;
fuente
En netbeans 8.0.2, la plantilla vdoc le da esto:
/* @var $variable type */
Sin embargo, Netbeans no reconocerá esto y no le dará la lista de autocompletar correcta para sus objetos. En su lugar, use esto, justo antes de su declaración de variable:
/** @var objectType $varName */
Realmente no he visto un gran uso para la plantilla vdoc estándar , especialmente para las variables de clase que se utilizarán como objetos PDO o PDOStatement.
Una solución que utilizo es ir a Herramientas / Opciones / Editor / Plantillas de código (con PHP seleccionado como su idioma) y agregar una nueva plantilla. Llamé a mi pista . Luego, en Texto expandido, use la siguiente plantilla:
/** @var ${VAR_TYPE variableFromNextAssignmentType default="ClassName"} $$${VARIABLE variableFromNextAssignmentName default="variable"} */
fuente
Para NetBeans IDE 8.2, la sintaxis es la siguiente:
class foobar{ /** @var string $myvar: optional description here **/ protected static $myvar; }
Esto proporcionará las sugerencias de tipo correctamente para las variables estáticas al menos.
fuente