如何设置`static / self`返回类型?

时间:2011-08-09 05:10:43

标签: netbeans phpdoc code-completion

我有主类和一些子类,我有静态方法来返回实例

class dad{
    public function __construct($arg){
    }

    // it returns caller class'es object
    public static function get($arg){
        return new static($arg);
    }
}

class son exteneds dad{
    public function __construct($arg){
    }

    public function sonFunc(){

    }
}

class daughter extends dad{
    public function __construct($arg){
    }

    public function daughterFunc(){

    }
}

现在,我想让Netbeans IDE知道,son::get()->应该由son方法自动执行,daughter::daughter()->daughter

自动执行

有可能吗?或者可能有任何变通方法? 我不想在所有子类中覆盖get()方法。

1 个答案:

答案 0 :(得分:1)

虽然这不是我亲自接近代码布局或“欺骗IDE”黑客的方式,但是让代码与自动完成一起工作的方法(在Eclipse PDT Helios中......也许NetBeans的行为相同)是to(mis)在类docblocks中为你的两个子类使用@method标记:

/**
 * @method son get() returns a son
 */
class son extends dad{}
/**
 * @method daughter get() returns a daughter
 */
class daughter extends dad{}

在我的IDE测试中,这足以让autocompletion识别出son :: get()会返回一个“son”对象,而daughter :: get()会返回一个“子”对象。

同样,这是对@method标记的意图的误用,但它确实以您要求的方式启用自动完成。