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 використовує магічний getter для змінної, і я хочу прив’язати цю змінну getter до об’єкта Class, будь-яка ідея, як це зробити? Оскільки я не можу визначити змінну у своєму класі.
Санкет Саху

Ого .. просто погуглив для розваги і справді не сподіваюся, що це насправді буде річчю .. Я ніколи в своєму житті не помилявся, і я щасливий, що помилився! Ця функція така класна, дякую! :)
Cagatay Ulubay

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 їх більше не підтримує, і в цілому вони не підтримуються іншими середовищами розробки. Я пропоную використовувати інший синтаксис.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.