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

时间:2012-04-14 20:33:04

标签: 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();
?>

的index.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时它正在工作但是我会有很多这样的文件,并且必须有一个比将该行添加到所有文件更好的方法。

3 个答案:

答案 0 :(得分:8)

确保项目的所有文件都在项目的包含路径中(righ click项目 - &gt; properties - &gt; include path)。通常只有“全局包含路径”,您在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会依据此信息提供正确的提示。

答案 1 :(得分:8)

转到工具 - &gt;选项 - &gt;点击顶部的PHP图标 - &gt;常规标签 - &gt;找到&#34;全球包含路径&#34; - &GT;添加文件夹 - &gt;

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

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

对我来说,这修复了自动完成并按住ctrl +点击方法调用。

答案 2 :(得分:3)

从netbeans转到tools->options 转到编辑器选择并从代码完成选择php for languages部分。这将展开菜单,您会看到Code Completion for Class Methods

部分

通过选择该部分的复选框来设置该配置。 enter image description here

我希望我明白这一点。我也使用netbeans,我可以在更改netbeans设置后自动完成。