我不知道如何准确地说出这个,但我需要的是一种加载类方法的类型提示的方法。基本上我有一个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();
答案 0 :(得分:0)
总是有效的是:
/** @var ADDTYPEHERE $test */
$test = base::get('test');
这也有用:
if ($test instanceof CLASS_IT_IS) {
// completion works in here
}
您想要的解决方案永远无法工作,因为您的IDE(netbeans)无法知道您实例化的类,没有任何提示,如上所述。