Sugerencia de tipo variable en Netbeans (PHP)


Solo curiosidad si hay una manera en netbeans para dar consejos de tipo para las variables regulares, de modo que intellisense lo recoge. Sé que puedes 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 tienes 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');

Donde usar afterward SomeService después, netbeans proporcionaría todos los métodos disponibles definidos en la clase Some_Service.

Author: Robin van Baalen, 2009-11-25

5 answers

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

 168
Author: johannes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-04 07:30:51

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

**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 eso ayude a alguien.

 21
Author: oucil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-04 20:00:32

¿Está buscando documentar esas molestas variables mágicas? (Lo hice; Esta pregunta actualmente se clasifica como el mejor resultado para eso en Google. Espero que esto ayude a alguien!)

La etiqueta @property le permite documentar magic variables php - aquellas implementadas usando __get() y __set(). La etiqueta debe ser utilizada 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 autocompletar, probado en Netbeans 8.1 y PhpStorm 2016.1.

introduzca la descripción de la imagen aquí

 7
Author: GHH,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-11 10:37:39

De acuerdo con 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 [] 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 se olvide de su declaración use, por ejemplo, use Foo;

 2
Author: rybo111,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-27 12:05:38

En netbeans 8.0.2, la plantilla vdoc le da esto:

/* @var $variable type */

Netbeans no reconocerá esto sin embargo, 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 stock vdoc, especialmente para las variables de clase que se van a usar como objetos PDO o PDOStatement.

Una solución que uso es en realidad entrar en Herramienta / Opciones / Editor / Plantillas de Código (con PHP seleccionado como su idioma), y añadir una nueva Plantilla. Llamé a la mía pista . Luego, en Texto expandido, use la siguiente plantilla:

/** @var ${VAR_TYPE variableFromNextAssignmentType default="ClassName"} $$${VARIABLE variableFromNextAssignmentName default="variable"} */
 1
Author: Mike,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-28 19:30:27