我有三个类,比如:
class Foo
{
static function test()
{
return new static();
}
}
class Bar extends Foo
{}
class Baz extends Foo
{}
现在如果调用:
$var = Bar::test();
我想让PhpStorm将$var
识别为called_class
,这里是:Bar
。
但是,如果我做$var = Baz::test();
,$var
就是Baz
实例。
如何让动态called_class向PhpStorm指示返回的类型?
我有一个类似的语法
/** @return "called_class" */
帮助PhpStorm并指明类型?
首先,您的静态函数中有一个错误。你不能使用
return $this;
因为静态调用不会创建任何实例。因此,您必须创建一个新实例。
class Foo
{
public static function test()
{
return new static();
}
}
static关键字将实例化类本身的一个新实例。
class Bar extends Foo
{
public function fooBar(){}
}
class Baz extends Foo
{
public function fooBaz(){}
}
我刚刚添加了foo函数,向您展示phpStorm现在可以正确地找到源代码。
$var = Bar::test();
$var->fooBar();
$var现在是Bar 的一个实例
$var2 = Baz::test();
$var2->fooBaz();
$var2现在是Baz 的一个实例