Pregunta Sugerencia de tipo variable en Netbeans (PHP)


Es curioso si hay una forma en netbeans de dar pistas tipo sobre variables regulares, para que intellisense lo capte. Sé que puedes hacerlo para las propiedades de clase, los parámetros de función, los tipos de devolución, etc. pero no puedo entender cómo hacerlo para las 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');

En caso de usar $ algúnServicio después, netbeans proporcionaría todos los métodos disponibles definidos en la clase Some_Service.


74
2017-11-25 17:16


origen


Respuestas:


Una sola línea es todo lo que necesitas:

/* @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


166
2017-11-25 17:57



Sé que esta es una pregunta anterior, pero estaba buscando una respuesta similar para Eclipse / Zend Studio y esto también lo resolvió.

** 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 si ...

/**
 * @var $varName Type_Name
 */ 

o...

// @var $varName Type_Name

parecía funcionar en absoluto. Espero que ayude a alguien.


21
2017-09-04 20:00



¿Estás buscando documentar esos molestos magia variables? (Lo hice; esta pregunta actualmente clasifica el mejor resultado para eso en Google. ¡Espero que esto ayude a alguien!)

los @property etiqueta le permite documentar magia las variables php - 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 desencadena autocompletar, probado en Netbeans 8.1 y PhpStorm 2016.1.

enter image description here


6
2018-05-11 10:37



En netbeans 8.0.2, el vdoc la plantilla te da esto:

/* @var $variable type */

Sin embargo, Netbeans no reconocerá esto y no le dará la lista correcta de autocompletado 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 acción vdoc Plantilla, especialmente para las variables de clase que se usarán como objetos PDO o PDOStatement.

Una solución que uso es en realidad entrar en Herramientas / Opciones / Editor / Plantillas de códigos (con PHP seleccionado como su Idioma), y agregue una nueva Plantilla. Llamé al mío insinuación . Luego, en Texto expandido, usa la siguiente plantilla:

/** @var ${VAR_TYPE variableFromNextAssignmentType default="ClassName"} $$${VARIABLE variableFromNextAssignmentName default="variable"} */

2
2018-03-28 19:30



De acuerdo a 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 puedes agregar [] a un nombre de clase para indicar una matriz de objetos:

/* @var $foos Foo[] */
$foos = // ...

foreach ($foos as $foo) {
    // $foo will be hinted as Foo here
}

Y no olvides tu use declaración, p. use Foo;


1
2018-01-27 10:58