从包含的文件NetBeans自动完成无法正常工作?

pre*_*per 11 php netbeans autocomplete

我有一个名为config.php的文件,我有其他文件包括config.php.编辑其中一个文件时,我使用config.php中的一个对象,它会自动填充对象的名称.但是,当我尝试查看此对象的函数或变量(使用 - >)时,没有自动完成.有没有办法使它工作?

注意:我已经在对象定义之前将/*@var $ myObject myType*/添加到config.php.我是否必须将该行添加到我的每个文件中,包括config.php?这似乎不对.

编辑:添加样本.

目录;

  • config.php文件
  • 的index.php
  • LIB/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();
?>
Run Code Online (Sandbox Code Playgroud)

index.php文件;

<?php
include_once 'config.php';

// here, auto completes object name
// not lists functions or variables after ->
$TestObj->someFunction();
?>
Run Code Online (Sandbox Code Playgroud)

LIB/test.class.php;

<?php
class test {
    public $var1;

    public function someFunction() {
        echo 'I am some function.';
        return 0;
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

当我将/*@var $ TestObj test*/添加到index.php时,它正在工作,但我会有很多这样的文件,并且必须有一个比将该行添加到所有文件更好的方法.

Wel*_*haf 8

确保项目的所有文件都在项目的包含路径中(右键单击项目 - >属性 - >包含路径).通常只有"全局包含路径",您在NetBeans设置中配置(例如,指向您的PEAR目录).将包含您希望自动完成的源代码的所有目录添加到此包含路径.提示:这包含路径与PHP本身使用的include_path无关.

而不是使用客户代码中的提示:

/* @var $TestObj test */
$TestObj->...
Run Code Online (Sandbox Code Playgroud)

你应该给源代码更多apidoc,例如:

<?php
class test {
    /**
     * @var SomeClass
     */
    public $var1;

    /**
     * @return int
     */
    public function someFunction() {
        echo 'I am some function.';
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

由于PHP的动态特性,IDE在此信息上实现了正确的提示.


Tom*_*iha 8

转到工具 - >选项 - >单击顶部的PHP图标 - >常规选项卡 - >查找"全局包含路径" - >添加文件夹 - >

if(onLinux){choose/var/www; } if(onWindows){选择c:\ path_to_htdocs或者其他; }

啊,今天编程太多.. :)

对我来说,这修复了自动完成和ctrl +点击方法调用.