NetBeans从包含的文件自动完成功能不起作用?

mccptt67  于 2022-11-10  发布在  其他
关注(0)|答案(3)|浏览(160)

我有一个名为config.php的文件,我还有其他文件包括config.php.当编辑其中一个文件时,我使用了config.php中的一个对象,它会自动补全对象的名称.但是,当我试图查看这个对象的函数或变量时(用-〉),没有自动补全功能.有什么方法可以让它工作吗?
注意:我已经在config.php的对象定义之前添加了/* @var $myObject myType */。我必须在每个包含config.php的文件中添加这一行吗?这似乎不对。
编辑:添加了样本。
目录;

  • config.php
  • index.php
  • lib/test.class.php

配置. 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();
?>

. php文件;

<?php
include_once 'config.php';

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

php中找到了一个测试用例。

<?php
class test {
    public $var1;

    public function someFunction() {
        echo 'I am some function.';
        return 0;
    }
}
?>

当我将/* @var $TestObj test */添加到index.php中时,它可以正常工作,但我将有很多这样的文件,一定有比将该行添加到所有文件更好的方法。

q5iwbnjs

q5iwbnjs1#

确保项目的所有文件都在项目的包含路径中(右键单击project -〉properties -〉include path)。通常只有“全局包含路径”,您可以在NetBeans设置中配置它(例如指向您的PEAR目录)。将包含您希望自动完成的源代码的所有目录添加到该包含路径中。提示:这个include路径与PHP本身使用的include_path没有任何关系。
此外,在古代码中不使用提示:

/* @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会根据这些信息给予正确的提示。

wmomyfyw

wmomyfyw2#

转到工具-〉选项-〉点击顶部的PHP图标-〉常规选项卡-〉找到“全局包含路径”-〉添加文件夹-〉
如果(在Linux上){选择/var/www;}如果(在Windows上){选择c:\路径_to_htdocs或任何内容;}
啊,今天的节目太多了。:)
对我来说,这修复了自动完成和ctrl+click方法调用。

goqiplq2

goqiplq23#

从netbeans转到tools->options转到编辑器选择,然后从代码完成选择php作为语言部分。这将展开菜单,您将看到一个Code Completion for Class Methods部分
通过选中该部分上的复选框来设置该配置。

我希望我能理解这一点。我也使用netbeans,我可以自动完成后,我改变了我的netbeans设置。

相关问题