Автоконкурсирование NetBeans по методу php класса

4808
undone

Я создал проект php в Netbeans 7.3. У меня есть класс ( MYSQL_DB). Когда я хочу получить доступ к его методам внутри файла, который я определил класс, он показывает мне это: Netbeans is showing methods

Обратите внимание, что это вне определения класса (не используется $this). Но когда я хочу получить доступ к его методам за пределами этого файла, он ничего не показывает мне:

Netbeans failed to show methods

В: Есть ли способ показать методы при вводе имени класса (например, первого изображения) во всех файлах?
Заранее спасибо!

6

2 ответа на вопрос

5
David Brown

Я подозреваю, что проблема в том, что Netbeans не знает класс вашей переменной. (Это часто случается в PHP, будучи слабо типизированным.) Сразу после того, как вы присвоите значение переменной, вставьте специальный комментарий подсказки типа:

$database=someFunction(); /* @var $database DatabaseClass */ 

Эта подсказка сообщит Netbeans тип $ database, позволяя предлагать методы. Если у вас есть контроль над источником некоторой функции, вы также можете добавить подсказку. Смотрите https://blogs.oracle.com/netbeansphp/entry/defining_a_variable_type_in множество примеров.

Спасибо, но не сработало! Все еще показывает ** Нет предложений ** undone 10 лет назад 0
Если я помещу комментарий перед определением переменной внутри функции: `global $ database`, я смогу увидеть ее метод, но есть тысячи таких случаев. Есть ли способ сделать это один раз и сделать его доступным во всех файлах? undone 10 лет назад 0
Если вы являетесь автором функции someFunction (), которая возвращает вашу базу данных $, вы сможете добавить блок phpDoc перед функцией, указав тип @return. https://manual.phpdoc.org/HTMLSmartyConverter/HandS/phpDocumentor/tutorial_tags.return.pkg.html David Brown 8 лет назад 0
Я попробовал это тогда, не сделал то, что хотел. Я перешел на phpstorm. undone 8 лет назад 0
Это был * единственный * ответ, который работал в моей установке Netbeans 8.1. Спасибо! SebiF 7 лет назад 0
3
Lance Cleveland

Начните с добавления комментариев в виде подсказок кода, где ваши переменные объявлены. В свойствах класса используйте длинную запись для комментариев:

/** * @var \ClassName $varname */ private $varname; 

Внутри классов вы обычно можете использовать встроенные комментарии:

/* @var \ClassName $inlinevar */ $inlinevar = new ClassName(); 

Вам может потребоваться очистить кэш, это поможет, если автозаполнение не работает для классов в одном проекте. В Linux найдите в своем домашнем каталоге ~ / .cache / .netbeans / и удалите подкаталог для версии проекта (всегда делайте резервную копию в первую очередь на случай, если что-то пойдет не так).

Если ваш класс живет в другом проекте, вам может потребоваться добавить путь к корневой папке для другого проекта, чтобы Netbeans мог сканировать эту папку для определения классов.