我可以指出返回到PhpStorm的动态类型吗?

我可以指出返回到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

我有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 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*/
可以工作!