hob*_*rap 14 factory type-hinting phpstorm
我的代码或多或少是这样的:
class Foo {
public static function factory($str) {
$class = "Foo_" . $str;
return new $class;
}
}
class Foo_Bar {
public function razzle() {
print "Foo_Bar->baz() was called";
}
}
$Obj = Foo::factory('Bar');
Run Code Online (Sandbox Code Playgroud)
我希望PhpStorm能够理解这$Obj是一个Foo_Bar对象,所以例如,如果我输入$Obj->raz,razzle()将显示自动完成.
有没有办法得到这个?告诉PhpStorm该函数Foo::factory($str)返回一个类型的对象Foo_$str?我的猜测是答案是否定的.
Sor*_*rcy 13
据我所知,你不能让PHPStorm理解Foo给出的东西,因为它是动态的.但是你可以通过在它上面放置一个doc注释来告诉PHPStorm你的$ Obj变量是什么,如下所示:
/** @var Foo_Bar $Obj */
$Obj = Foo::factory('Bar');
Run Code Online (Sandbox Code Playgroud)
是的,如果您的工厂是静态方法,则可以执行此操作.它应该适用于您提供的示例.
更多细节和一些基本示例可以在这里找到:http://confluence.jetbrains.com/display/PhpStorm/PhpStorm+Advanced+Metadata