Ciekawe, czy w netbeans jest sposób, aby podać wskazówki typu dla zwykłych zmiennych, aby Intellisense je wychwycił. Wiem, że możesz to zrobić dla właściwości klas, parametrów funkcji, typów zwracanych itp., Ale nie mogę dowiedzieć się, jak to zrobić dla zwykłych zmiennych. Jest to coś, co naprawdę pomogłoby w sytuacjach, w których masz metodę, która może zwracać różne typy obiektów (np. Lokalizator usług).
np. coś takiego:
/**
* @var Some_Service $someService
*/
$someService = ServiceLocator::locate('someService');
W przypadku późniejszego użycia $ someService netbeans zapewniłoby wszystkie dostępne metody zdefiniowane w klasie Some_Service.
Odpowiedzi:
Wystarczy jedna linia:
/* @var $varName Type_Name */
Zobacz ten artykuł na blogu NetBeans PHP: https://blogs.oracle.com/netbeansphp/entry/defining_a_variable_type_in
źródło
$this->obj = $serviceLocator->get('obj');
używam/* @var $obj Obj */
, nie działa .../** @var Type_Name */
, zobacz ten post ?vdoc
w wierszu nad zmienną, którą zamierzasz udokumentować, a następnie nacisnąć,Tab
a to zadziała jak makro, aby automatycznie utworzyć blok dokumentu @johannes powyżej.Wiem, że to starsze pytanie, ale szukałem podobnej odpowiedzi dla Eclipse / Zend Studio i to również rozwiązało problem.
** Należy jednak pamiętać, że musi znajdować się w jednej linii z otwarciem i zamknięciem wyraźnie w tym stylu ...
/* @var $varName Type_Name */
Żadnych innych formatów, czy ...
/** * @var $varName Type_Name */
lub...
// @var $varName Type_Name
wydawało się, że w ogóle działa. Mam nadzieję, że to komuś pomoże.
źródło
Chcesz udokumentować te nieznośne magiczne zmienne? (Tak; to pytanie zajmuje obecnie czołowe miejsce w Google. Mam nadzieję, że to komuś pomoże!)
@property
Tag pozwala udokumentować magiczne zmienne php - te realizowane za pomocą__get()
a__set()
. Znacznika należy używać w dokumentacji bezpośrednio poprzedzającej definicję klasy:/** * Class Contact * @property string $firstName * @property string $lastName */ class Contact extends Model { ...
Ta notacja uruchamia autouzupełnianie, testowane w Netbeans 8.1 i PhpStorm 2016.1.
źródło
Zgodnie z tym zgłoszeniem błędu składnia zmieni się w NetBeans 9 :
/* @var $variable VarType */ // vdoc1 (legacy syntax) /** @var VarType $variable */ // vdoc (new syntax)
Warto też wspomnieć, że
[]
do nazwy klasy można dołączyć tablicę obiektów:/* @var $foos Foo[] */ $foos = // ... foreach ($foos as $foo) { // $foo will be hinted as Foo here }
I nie zapomnij swojego
use
oświadczenia, npuse Foo;
źródło
W netbeans 8.0.2 szablon vdoc daje ci to:
/* @var $variable type */
Netbeans nie rozpozna tego jednak i nie poda poprawnej listy autouzupełniania dla twoich obiektów. Zamiast tego użyj tego, tuż przed deklaracją zmiennej:
/** @var objectType $varName */
Naprawdę nie widziałem dobrego zastosowania szablonu vdoc zapasowego , szczególnie dla zmiennych klas, które mają być używane jako obiekty PDO lub PDOStatement.
Jednym z rozwiązań, których używam, jest faktycznie przejście do Narzędzia / Opcje / Edytor / Szablony kodu (z PHP wybranym jako język) i dodanie nowego szablonu. Zadzwoniłem do mojej podpowiedzi . Następnie w obszarze Rozszerzony tekst użyj następującego szablonu:
/** @var ${VAR_TYPE variableFromNextAssignmentType default="ClassName"} $$${VARIABLE variableFromNextAssignmentName default="variable"} */
źródło
Dla NetBeans IDE 8.2 składnia jest następująca:
class foobar{ /** @var string $myvar: optional description here **/ protected static $myvar; }
Zapewni to prawidłowe wskazówki dotyczące typu przynajmniej dla zmiennych statycznych.
źródło