我可以指出返回到PhpStorm的动态类型吗?
我有3门课,比如:我可以指出返回到PhpStorm的动态类型吗?,php,comments,phpstorm,Php,Comments,Phpstorm,我有3门课,比如: class Foo { static function test() { return new static(); } } class Bar extends Foo {} class Baz extends Foo {} 如果现在打电话: $var = Bar::test(); 我希望PhpStorm将$var标识为称为_class,在这里:条 但是,如果我这样做,$var=Baz::test()$var是Baz实例 class
class Foo
{
static function test()
{
return new static();
}
}
class Bar extends Foo
{}
class Baz extends Foo
{}
如果现在打电话:
$var = Bar::test();
我希望PhpStorm将$var
标识为称为_class
,在这里:条
但是,如果我这样做,$var=Baz::test()代码>$var
是Baz
实例
class Foo
{
public static function test()
{
return new static();
}
}
如何让动态调用的_类向PhpStorm指示返回的类型
我有这样的语法
/** @return "called_class" */
要帮助PHP格式化并指示类型?首先,静态函数中有一个错误。你不能使用
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的一个实例我真的不明白你的问题。您需要的东西的行为类似于返回static
?如果您有一个静态
方法,则无法返回$this
,因为您目前根本没有实例。你能编辑你的问题以表明你真正想要返回什么吗?@return static
(对于静态和“正确”方法)或@return$this
(仅对于“正确”方法)都可以。我是sry,是的,我在示例中犯了一个错误。我编辑:它不返回“this”,因为这是不可能的,返回newstatic()代码>是的,我编辑了我的错误,我会说返回新的static()
当然。。。但是,我的目标是保持孩子们上课的整洁。我不想在children类中声明方法。您不需要这样做。只想表明它可以工作,phpStorm可以正确地显示可用功能。事实上,请告诉我一个好答案:/**@return static*/
可以工作!