【发布时间】:2014-08-15 16:13:18
【问题描述】:
我不知道如何准确地表达这个,但我需要的是一种加载类方法的类型提示的方法。基本上我有一个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();
【问题讨论】:
-
我不只使用
new? -
@sectus 你是什么意思?
-
我的意思是
$test = new test; -
@sectus 就是一个例子,我会用它来做类似
base::get('test')->derp();的东西,但建议使用上述方法。 -
用
(new test)->derp();代替base::get('test')->derp();
标签: php netbeans type-hinting