JetBrains WebIDE: podpowiedzi typu zmiennej PHP?

81

Czy istnieje sposób, aby zasugerować WebIDE, że zmienna ma jakiś typ? Muszę iterować tablicę obiektów i nie ma dostępnego autouzupełniania. To pomaga w ZendStudio:

/* @var ClassName $object */

Wiem, że w JetBrains jest funkcja deklarowania tablicy obiektów:

/**
 * @return ClassName[]
 */

Ale działa to tylko z typem zwracanym funkcji.

kolypto
źródło
Działa z tablicami. Czy działa z ArrayIterators, które iterują po określonym typie?
redestructa

Odpowiedzi:

144

/* @var ClassName $object */jest nieprawidłowym komentarzem PHPDOC i nie jest analizowany w bieżącej wersji środowiska Web IDE. Użyj podwójnych gwiazdek, aby to zadziałało:

/** @var ClassName $object */

Ponadto, można opisywać $arrayw foreach($array as $var)z /** @var ClassName[] $array */i $varwpisać zostanie wyprowadzona automatycznie.

Alexey Gopachenko
źródło
nie wiedziałem o notacji w nawiasach kwadratowych
SandorRacz
2
Powiązane pytanie: Moja klasa PHP używa magicznego programu pobierającego jako zmiennej i chcę powiązać tę zmienną pobierającą z obiektem klasy. Masz jakiś pomysł, jak to zrobić? Ponieważ nie mogę zdefiniować zmiennej w mojej klasie.
Sanket Sahu
Wow… po prostu szukałem w Google dla zabawy i naprawdę nie mam nadziei, że to naprawdę będzie coś… Nigdy w życiu tak bardzo się nie myliłem i cieszę się, że się myliłem! Ta funkcja jest super, dzięki! :)
Cagatay Ulubay
29

Jak już wspomniano, PhpStorm będzie używał zwykłych bloków phpdoc:

/** @var ClassName $object */

Jednak od wersji 2.1 obsługuje również adnotacje Netbeans / Eclipse / Zend @var :

/* @var $object ClassName */

Zwróć uwagę, że komentarz zaczyna się od /*zamiast /**(dlatego nie pojawi się, jeśli wygenerujesz rzeczywistą dokumentację za pomocą phpdoc). Ponadto argumenty są zamieniane, chociaż PhpStorm akceptuje dowolne zamówienie:

/* @var ClassName $object */

Wreszcie, mogą poprzedzać prawie każdą dowolną linię kodu (technicznie rzecz biorąc, bloki phpdoc są ograniczone do określonych elementów).


Edycja: od 2019 r. Adnotacje Netbeans / Eclipse / Zend @var wydają się być w większości porzucone. NetBeans 11 już ich nie obsługuje i generalnie nie są obsługiwane przez inne IDE. Proponuję użyć innej składni.

Álvaro González
źródło