JetBrains WebIDE: подсказка типа переменной PHP?
Есть ли способ называть WebIDE, что переменная имеет какой-то тип?
Я должен перебирать массив объектов, и нет автоматического завершения.
Это помогает в ZendStudio:
/* @var ClassName $object */
Я знаю, что в JetBrains есть функция для объявления массива объектов:
/**
* @return ClassName[]
*/
Но это работает только с возвращаемым типом функции.
Ответы
Ответ 1
/* @var ClassName $object */
является недействительным комментарием PHPDOC и не анализируется в текущей версии Web IDE. Используйте двойные звездочки, чтобы заставить его работать:
/** @var ClassName $object */
Кроме того, вы можете аннотировать $array
в foreach($array as $var)
с типом /** @var ClassName[] $array */
и $var
, который будет выведен автоматически.
Ответ 2
Как уже указывалось, 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. Я предлагаю использовать другой синтаксис.