Веб-сайт JetBrains: намек на тип переменной PHP?


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

/* @var ClassName $object */

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

/**
 * @return ClassName[]
 */

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

Author: Makoto, 2009-11-29

2 answers

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

/** @var ClassName $object */

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

 110
Author: Alexey Gopachenko, 2009-11-30 12:33:33

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

/** @var ClassName $object */

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

/* @var $object ClassName */

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

/* @var ClassName $object */

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

 22
Author: Álvaro González, 2018-06-25 16:56:23