У меня есть абстрактный класс с самовозвращающимися set-методами и его дочерним классом:
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. Как решить проблему с этим хинтингом?
Ой, тогда извините. Новая редакция лучше? И, кстати, вам помогает этот вопрос: stackoverflow.com/questions/26470325/…?
Да, похоже, это аналогичный вопрос, спасибо






@Blackhole, ваше редактирование неверно. В этой версии нет никаких предупреждений. Правильно только добавление "extends AbstractFoo"