Автозаполнение 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.