我可以指示动态类型回到PhpStorm?(Can I indicate dynamic type r

2019-10-22 13:59发布

我有3类,比如:

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(); $varBaz实例。

我怎样才能获得动态called_class以指示PhpStorm返回什么类型?

我有一个类似的语法

/** @return "called_class" */

帮助PhpStorm并注明类型?

Answer 1:

首先,你必须在你的静态功能的错误。 您不能使用

 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现在是酒吧的一个实例

$var2 = Baz::test();   
$var2->fooBaz();

$ VAR2现在是巴兹的一个实例



文章来源: Can I indicate dynamic type returned to PhpStorm?