Автозаполнение NetBeans из включенного файла не работает?
У меня есть файл с именем config.php, и у меня есть другие файлы, включая config.php. При редактировании одного из файлов я использую объект из config.php, и он автоматически заполняет имя объекта. Но, когда я пытаюсь увидеть функции или переменные этого объекта (с → ), автозаполнение не выполняется. Есть ли способ заставить его работать?
Примечание. Я уже добавил /* @var $myObject myType */в config.php перед определением объекта. Должен ли я добавить эту строку в каждый файл, включая config.php? Это не кажется правильным.
Изменить: добавлен образец.
Каталог
- config.php
- index.php
- Библиотека /test.class.php
config.php;
<?php
define('ABSPATH', dirname(__FILE__));
include_once ABSPATH.'/lib/test.class.php';
/* @var $TestObj test */
$TestObj = new test();
// auto complete works here.
$TestObj->someFunction();
?>
index.php
<?php
include_once 'config.php';
// here, auto completes object name
// not lists functions or variables after ->
$TestObj->someFunction();
?>
Библиотека/test.class.php;
<?php
class test {
public $var1;
public function someFunction() {
echo 'I am some function.';
return 0;
}
}
?>
Он работает, когда я добавляю /* @var $TestObj test */в index.php, но у меня будет много таких файлов, и должен быть лучший способ, чем добавление этой строки ко всем файлам.
Ответы
Ответ 1
Сделайте вывод, что все файлы вашего проекта находятся в проекте, включая путь (проект righ click → properties → include path). Обычно существует только "глобальный путь включения", который вы настраиваете в настройках NetBeans (например, указывать на ваш каталог PEAR). Добавьте все каталоги, которые содержат исходный код, который вы хотите автозаполнения для этого пути. Подсказка: это включает в себя путь не имеет никакого отношения к include_path, используемому в самом PHP.
Также вместо использования подсказок в коде cient:
/* @var $TestObj test */
$TestObj->...
Вы должны предоставить источникам еще несколько apidoc, например:
<?php
class test {
/**
* @var SomeClass
*/
public $var1;
/**
* @return int
*/
public function someFunction() {
echo 'I am some function.';
return 0;
}
}
из-за динамической природы PHP, реализации IDE на эту информацию, чтобы дать правильные подсказки.
Ответ 2
Перейдите в Инструменты- > Параметры- > щелкните значок PHP вверху → вкладка "Общие" → найдите "Глобальный путь включения",
- > Добавить папку →
if (onLinux) {выберите/var/www; }
if (onWindows) {выберите c:\path_to_htdocs или что угодно; }
А, слишком много программирования на сегодня..:)
Для меня это отремонтированное автозаполнение и ctrl + щелчок по вызову метода.
Ответ 3
От netbeans перейдите к tools->options
Перейдите к выбору редактора и из кода "Завершение" выберите php для раздела "Языки". Это расширит меню, и вы увидите раздел Code Completion for Class Methods
Задайте эту конфигурацию, установив флажки в этом разделе.
![enter image description here]()
Надеюсь, я понял это правильно. Я также использую netbeans, и я могу выполнить автозаполнение после изменения настроек netbeans.