Php 如果方法是在抽象类中编写的,我应该使用什么自返回类型?

Php 如果方法是在抽象类中编写的,我应该使用什么自返回类型?,php,inheritance,abstract-class,Php,Inheritance,Abstract Class,我有一个具有自返回集合方法的抽象类及其子类: abstract class AbstractFoo { private $bar; public function setBar(string $bar): self { $this->bar = $bar; return $this; } } class Foo extends AbstractFoo { } 我创建并设置变量: $foo = (new Foo())-&g

我有一个具有自返回集合方法的抽象类及其子类:

abstract class AbstractFoo
{
    private $bar;

    public function setBar(string $bar): self
    {
        $this->bar = $bar;
        return $this;
    }
}

class Foo extends AbstractFoo
{
}
我创建并设置变量:

$foo = (new Foo())->setBar('bar1');                  // No warning
$foo = (new Foo())->setBar('bar1')->setBar('bar2');  // Warning

此代码正在工作,但PHPStorm提示警告,因为
setBar()
返回
AbstractFoo
,而不是
Foo
。如何解决这个暗示的问题?

@Blackhole,你的编辑是错误的。在这个版本中没有任何警告。只添加“extends AbstractFoo”是正确的哦,对不起,那么。新的编辑更好吗?顺便问一下,这个问题对你有帮助吗:?是的,似乎是类似的问题,谢谢