web-dev-qa-db-fra.com

Indication de type variable dans Netbeans (PHP)

Juste curieux de savoir s'il existe un moyen dans les netbeans de donner des indices de type pour les variables régulières, afin qu'intellisense le prenne. Je sais que vous pouvez le faire pour les propriétés de classe, les paramètres de fonction, les types de retour, etc. mais je ne peux pas comprendre comment le faire pour les variables régulières. C'est quelque chose qui aiderait vraiment dans les situations où vous avez une méthode qui peut retourner différents types d'objets (comme un localisateur de service).

ex quelque chose comme:

/**
 * @var Some_Service $someService
 */
$someService = ServiceLocator::locate('someService');

Lors de l'utilisation de $ someService par la suite, les netbeans fourniraient toutes les méthodes disponibles définies dans la classe Some_Service.

80
rr.

Une seule ligne suffit:

/* @var $varName Type_Name */

Voir cet article dans le blog NetBeans PHP: https://blogs.Oracle.com/netbeansphp/entry/defining_a_variable_type_in

Remarque: au moins, dans la version 8.2; La clé semble être:

  • L'astérisque unique (/* au lieu de /**).
  • Placer le type après le nom de la variable.
  • Ne rien avoir avant et après l'indication de type (sauf les espaces blancs, mais même cela n'est pas autorisé lorsque le commentaire n'est pas sur une seule ligne).
177
johannes

Je sais que c'est une question plus ancienne, mais je cherchais une réponse similaire pour Eclipse/Zend Studio et cela l'a également résolue.

** Notez cependant qu'il doit être sur une seule ligne avec l'ouverture et la fermeture explicitement dans ce style ...

/* @var $varName Type_Name */

Pas d'autres formats que ce soit ...

/**
 * @var $varName Type_Name
 */ 

ou...

// @var $varName Type_Name

semblait fonctionner du tout. J'espère que cela aide quelqu'un.

23
oucil

Cherchez-vous à documenter ces variables encombrantes magiques ? (Je l'ai fait; cette question se classe actuellement au premier rang des résultats pour Google. J'espère que cela aide quelqu'un!)

La balise @property Vous permet de documenter les variables php magiques - celles implémentées à l'aide de __get() et __set(). La balise doit être utilisée dans la documentation précédant immédiatement la définition de classe:

/**
 * Class Contact
 * @property string $firstName
 * @property string $lastName
 */
class Contact extends Model {
   ...

Cette notation déclenche la saisie semi-automatique, testée dans Netbeans 8.1 et PhpStorm 2016.1.

enter image description here

8
GHH

Dans netbeans 8.0.2, le modèle vdoc vous donne ceci:

/* @var $variable type */

Netbeans ne le reconnaîtra pas cependant et ne vous donnera pas la liste de saisie semi-automatique correcte pour vos objets. Utilisez plutôt ceci juste avant votre déclaration de variable:

/** @var objectType $varName */

Je n'ai pas vraiment vu une grande utilité pour le stock vdoc Template, en particulier pour les variables de classe qui vont être utilisées comme objets PDO ou PDOStatement.

Une solution que j'utilise consiste en fait à aller dans Outils/Options/Éditeur/Modèles de code (avec PHP sélectionné comme votre langue), et ajouter un nouveau modèle. J'ai appelé le mien indice. Ensuite, sous Texte développé, utilisez le modèle suivant:

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

Selon ce rapport de bogue , la syntaxe changera dans NetBeans 9 :

/* @var $variable VarType */    // vdoc1 (legacy syntax)
/** @var VarType $variable */   // vdoc (new syntax)

Il convient également de mentionner que vous pouvez ajouter [] à un nom de classe pour indiquer un tableau d'objets:

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

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

Et n'oubliez pas votre instruction use, par exemple use Foo;

2
rybo111