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

2024-01-24

我有一个名为 config.php 的文件,还有其他文件包括 config.php。编辑其中一个文件时,我使用 config.php 中的一个对象,它会自动补全该对象的名称。但是,当我尝试查看该对象的函数或变量(使用 -> )时,没有自动完成。有什么办法让它发挥作用吗?

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

编辑:添加示例。

目录;

  • 配置文件
  • 索引.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();
?>

lib/test.class.php;

<?php
class test {
    public $var1;

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

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


确保项目的所有文件都位于项目的包含路径中(右键单击项目 -> 属性 -> 包含路径)。通常只有“全局包含路径”,您可以在 NetBeans 设置中配置该路径(例如,指向您的 PEAR 目录)。将包含您想要自动完成的源代码的所有目录添加到此包含路径。提示:此包含路径与 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 会根据此信息给出正确的提示。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐