PHP:通过@var提供多个类/接口的文档/提示

时间:2014-02-18 12:05:55

标签: php netbeans documentation-generation code-hinting

我正在使用

/* @var $var Type */ 

然后,NetBeans通常可以自动完成代码中的方法和内容。 我仍然觉得它是一个非常有用的功能,但有时我会得到它的对象 类扩展一个类并实现多个接口。 或者我甚至有一个传递类层次结构。

我不知道告诉NetBeans它应该使用自动完成的方法 所有这些接口和上层父类。

我想这样做当然每个接口/类都得到了 专用方法(在接口的情况下定义...)

我试过这样的事情:

/* @var $var TypeA|\TypeB|\TypeC */

因为我看到NetBeans将为返回的方法生成类似的文档 由于开关/外壳而产生的不同类对象。但这似乎只适用于 @return表示法。

我也试过

/* @var $var TypeA|TypeB */ 

也不行......

NetBeans将在这种情况下自动完成最后一次告知Type,但不是两个/所有告知类的组合。

我如何记录所以我的自动完成工作符合要求(我列出的所有类/接口的方法摘要)?

问候!

1 个答案:

答案 0 :(得分:1)

如果我理解正确,那么您需要通过PHP代码提示。

问题是netbeans无法知道对象究竟是什么;除非你告诉它。解决方案是在对象声明中使用 @property 命令,以转发类型定义对象成员,无论是类还是接口。

/**
@property classMyClass1 $clsMyClass1
@property classMyClass2 $clsMyClass2
*/
class baseClass{
    public $clsMyclass1; 
    public $clsMyClass2;

    public function __construct() {
        $this->clsMyClass1 = new classMyClass1();
        $this->clsMyClass2 = new classMyClass2();
    }
}

$foo = new baseClass();

现在,当您在netbeans中键入代码时,它将知道在您上次输入的对象上显示的提示

$foo->clsMyClass1->

只要每个类都有一个前向属性decleration,你可以根据需要链接

$foo->class1->class2->class3->...

上面的代码需要autoload()函数来加载正确的类文件....

希望这能帮到你!