显示类方法类型提示

时间:2014-06-25 07:41:20

标签: php netbeans type-hinting

我不知道如何准确地说出这个,但我需要的是一种加载类方法的类型提示的方法。基本上我有一个base类,其get函数看起来像这样:

class Base {

    /**
     * 
     * @param type $i
     * @return \i
     */
    public static function get($i) {
        // make sure it exists before creating
        $classes = get_declared_classes();
        if (!in_array($i, $classes)) {
            if (class_exists($i)) {
                return new $i();
            }
        }
        return $i;
    }
}

现在举个例子,假设我有一个名为test的课程:

class test {
    function derp() {
        echo 'derp';
    }
}

我通过以下方式实例化test对象:

$test = base::get('test');

现在我想要做的就像我这样输入:

$test->

应该建议方法(目前只有derp()),我已经看到了SO周围的文档,但它们不起作用:(

奇怪的是,如果我将@return评论更改为test班级名称,那么建议就会有效。

但是它们都没有设置类,可能会有不同的类实例化,因此我尝试了@returns \i(netbeans 建议的)。有没有办法实现这个目标?


修改

我需要类型提示的原因是允许调用如下方法:

base::get('test')->derp();

1 个答案:

答案 0 :(得分:0)

总是有效的是:

/** @var ADDTYPEHERE $test */
$test = base::get('test');

这也有用:

if ($test instanceof CLASS_IT_IS) {
  // completion works in here
}

您想要的解决方案永远无法工作,因为您的IDE(netbeans)无法知道您实例化的类,没有任何提示,如上所述。