Hints van variabel type in Netbeans (PHP)

Gewoon nieuwsgierig of er een manier is in netbeans om typehints te geven voor reguliere variabelen, zodat Intellisense het oppikt. Ik weet dat je het kunt doen voor klasse-eigenschappen, functieparameters, retourtypen, enz. Maar ik kan er niet achter komen hoe ik het voor reguliere variabelen moet doen. Het is iets dat echt zou helpen in situaties waarin je een methode hebt die verschillende objecttypes kan retourneren (zoals een servicelocator).

ex zoiets als:

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

Als je daarna $someService gebruikt, biedt netbeans alle beschikbare methoden die zijn gedefinieerd in de klasse Some_Service.


Antwoord 1, autoriteit 100%

Een enkele regel is alles wat je nodig hebt:

/* @var $varName Type_Name */

Zie dit artikel in de NetBeans PHP Blog: https://blogs.oracle.com/netbeansphp /entry/defining_a_variable_type_in

Opmerking: tenminste, in versie 8.2; De sleutel lijkt te zijn:

  • De enkele asterisk (/*in plaats van /**).
  • Het type achter de variabelenaam plaatsen.
  • Niets hebben voor en na de type-hint
    (behalve witruimte, maar zelfs dat mag niet
    wanneer de opmerking niet in een enkele regel staat).

Antwoord 2, autoriteit 13%

Ik weet dat dit een oudere vraag is, maar ik was op zoek naar een soortgelijk antwoord voor Eclipse/Zend Studio en dit loste het ook op.

**Merk echter op dat het op een enkele regel moet staan ​​met de opening en sluiting expliciet in deze stijl…

/* @var $varName Type_Name */

Geen andere formaten, of…

/**
 * @var $varName Type_Name
 */ 

of…

// @var $varName Type_Name

leek helemaal te werken. Ik hoop dat dat iemand helpt.


Antwoord 3, autoriteit 5%

Wilt u die vervelende magischevariabelen documenteren? (Dat deed ik; deze vraag staat momenteel bovenaan in Google. Ik hoop dat iemand hier iets aan heeft!)

Met de tag @propertykunt u magischephp-variabelen documenteren – die zijn geïmplementeerd met behulp van __get()en __set(). De tag moet worden gebruikt in de documentatie direct voorafgaand aan de klassedefinitie:

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

Deze notatie activeert autocomplete, getest in Netbeans 8.1 en PhpStorm 2016.1.

voer hier de afbeeldingsbeschrijving in


Antwoord 4, autoriteit 3%

Volgens dit bugrapportzal de syntaxis veranderen in NetBeans 9:

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

Het is ook vermeldenswaard dat u []aan een klassenaam kunt toevoegen om een ​​reeks objecten aan te geven:

/* @var $foos Foo[] */
$foos = // ...
foreach ($foos as $foo) {
    // $foo will be hinted as Foo here
}

En vergeet uw use-statement niet, b.v. use Foo;


Antwoord 5

In netbeans 8.0.2 geeft de sjabloon vdocu dit:

/* @var $variable type */

Netbeans zal dit echter niet herkennen en zal u niet de juiste autocomplete lijst voor uw objecten geven. Gebruik in plaats daarvan dit, net voor uw variabele declaratie:

/** @var objectType $varName */

Ik heb niet echt een goed gebruik gezien van de stock vdoc-sjabloon, vooral niet voor klassevariabelen die als PDO- of PDOStatement-objecten zullen worden gebruikt.

Eén oplossing die ik gebruik is om in te gaan op
Tools / Options / Editor / Code Templates (met PHP geselecteerd als uw taal), en voeg een nieuwe Template toe. Ik noemde de mijne hint. Gebruik dan onder Uitgebreide tekst het volgende sjabloon:

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

Antwoord 6

Voor NetBeans is de IDE 8.2-syntaxis als volgt:

class foobar{
    /** @var string $myvar: optional description here **/
    protected static $myvar;
}

Dit geeft in ieder geval de juiste typehints voor statische variabelen.

Other episodes