12

我有一个名为 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();
?>

库/test.class.php;

<?php
class test {
    public $var1;

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

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

4

3 回答 3

8

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

也不要在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 依靠此信息提供正确的提示。

于 2012-04-24T09:29:51.527 回答
8

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

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

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

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

于 2014-10-04T19:36:51.400 回答
3

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

通过选择该部分上的复选框来设置该配置。 在此处输入图像描述

我希望我理解正确。我也使用 netbeans,我可以在更改 netbeans 设置后自动完成。

于 2012-04-20T18:43:47.187 回答