Просто любопытно, есть ли в netbeans способ давать подсказки типа для обычных переменных, чтобы intellisense уловил это. Я знаю, что вы можете сделать это для свойств класса, параметров функций, возвращаемых типов и т.д., но я не могу понять, как это сделать для обычных переменных. Это то, что действительно поможет в ситуациях, когда у вас есть метод, который может возвращать разные типы объектов (например, локатор служб).
ex что-то вроде:
/**
* @var Some_Service $someService
*/
$someService = ServiceLocator::locate('someService');
При последующем использовании $ someService netbeans предоставит все доступные методы, определенные в классе Some_Service.
Ответы:
Все, что вам нужно - это одна строка:
/* @var $varName Type_Name */
См. Эту статью в блоге PHP NetBeans: https://blogs.oracle.com/netbeansphp/entry/defining_a_variable_type_in
источник
$this->obj = $serviceLocator->get('obj');
если я использую,/* @var $obj Obj */
он не работает .../** @var Type_Name */
, см. этот пост ?vdoc
строку над переменной, которую вы собираетесь документировать, а затем нажать,Tab
и это будет действовать как макрос для автоматического создания блока документации @johannes posts выше.Я знаю, что это более старый вопрос, но я искал аналогичный ответ для Eclipse / Zend Studio, и это тоже решило его.
** Обратите внимание, что он должен быть в одной строке с открытием и закрытием явно в этом стиле ...
/* @var $varName Type_Name */
Никаких других форматов нет ли ...
/** * @var $varName Type_Name */
или же...
// @var $varName Type_Name
казалось, вообще работает. Надеюсь, это кому-то поможет.
источник
Вы хотите задокументировать эту надоедливую магию переменные? (Да; в настоящее время этот вопрос занимает первое место в рейтинге Google. Надеюсь, это кому-то поможет!)
@property
Тег позволяет документировать магический переменный PHP - те , реализовано с использованием__get()
и__set()
. Тег должен использоваться в документации непосредственно перед определением класса:/** * Class Contact * @property string $firstName * @property string $lastName */ class Contact extends Model { ...
Эта запись запускает автозаполнение, протестированное в Netbeans 8.1 и PhpStorm 2016.1.
источник
Согласно этому отчету об ошибке , в NetBeans 9 изменится синтаксис :
/* @var $variable VarType */ // vdoc1 (legacy syntax) /** @var VarType $variable */ // vdoc (new syntax)
Также стоит упомянуть, что вы можете добавить
[]
к имени класса, чтобы указать массив объектов:/* @var $foos Foo[] */ $foos = // ... foreach ($foos as $foo) { // $foo will be hinted as Foo here }
И не забывайте свое
use
утверждение, напримерuse Foo;
источник
В netbeans 8.0.2 шаблон vdoc дает вам следующее:
/* @var $variable type */
Однако Netbeans не распознает это и не предоставит вам правильный список автозаполнения для ваших объектов. Вместо этого используйте это непосредственно перед объявлением переменной:
/** @var objectType $varName */
На самом деле я не видел большого использования стандартного vdoc шаблона , особенно для переменных класса, которые будут использоваться в качестве объектов PDO или PDOStatement.
Одно из решений, которое я использую, - это перейти в Инструменты / Параметры / Редактор / Шаблоны кода (с PHP, выбранным в качестве вашего языка) и добавить новый шаблон. Я назвал свой намек . Затем в разделе «Расширенный текст» используйте следующий шаблон:
/** @var ${VAR_TYPE variableFromNextAssignmentType default="ClassName"} $$${VARIABLE variableFromNextAssignmentName default="variable"} */
источник
Для NetBeans IDE 8.2 синтаксис выглядит следующим образом:
class foobar{ /** @var string $myvar: optional description here **/ protected static $myvar; }
Это обеспечит правильные подсказки типов, по крайней мере, для статических переменных.
источник