JetBrains WebIDE: подсказка типа переменной PHP?

81

Есть ли способ намекнуть WebIDE, что переменная имеет какой-то тип? Мне нужно перебрать массив объектов, а автозаполнение недоступно. В ZendStudio это помогает:

/* @var ClassName $object */

Я знаю, что в JetBrains есть функция для объявления массива объектов:

/**
 * @return ClassName[]
 */

Но это работает только с типом возвращаемого значения функции.

колипто
источник
Работает с массивами. Работает ли он с ArrayIterators, которые перебирают определенный тип?
redestructa

Ответы:

144

/* @var ClassName $object */является недействительным комментарием PHPDOC и не анализируется в текущей версии Web IDE. Используйте двойные звездочки, чтобы он работал:

/** @var ClassName $object */

Кроме того , вы можете аннотировать $arrayв foreach($array as $var)с /** @var ClassName[] $array */и $varтипа будет выведена автоматически.

Алексей Гопаченко
источник
не знал об обозначении квадратных скобок
SandorRacz
2
Связанный вопрос: мой класс PHP использует магический геттер для переменной, и я хочу привязать эту переменную геттера к объекту класса, есть идеи, как это сделать? Поскольку я не могу определить переменную в своем классе.
Sanket Sahu
Ничего себе ... просто погуглил для удовольствия и на самом деле нет никакой надежды, что это действительно будет что-то ... Я никогда не был так неправ в своей жизни, и я счастлив, что был неправ! Это классная функция, спасибо! :)
Чагатай Улубай 05
29

Как уже отмечалось, PhpStorm будет использовать обычные блоки phpdoc:

/** @var ClassName $object */

Однако, начиная с версии 2.1, он также поддерживает аннотации Netbeans / Eclipse / Zend @var :

/* @var $object ClassName */

Обратите внимание на комментарий начинается , с /*чем /**( при этом он не будет отображаться , если вы создаете реальную документацию с PHPDoc). Кроме того, аргументы меняются местами, хотя PhpStorm принимает любой порядок:

/* @var ClassName $object */

И последнее, но не менее важное: они могут предшествовать практически любой произвольной строке кода (технически блоки phpdoc ограничены определенными элементами).


Изменить: по состоянию на 2019 год аннотации Netbeans / Eclipse / Zend @var, похоже, в основном заброшены. NetBeans 11 больше не поддерживает их, и, как правило, они не поддерживаются другими IDE. Предлагаю использовать другой синтаксис.

Альваро Гонсалес
источник