PHP 7.1
我目前正在尝试创建一个抽象类来提供、定义和部分实现其子类的功能。
在这里,我使用以下构造:
abstract class Parent {
public static function fromDB(string $name = '') {
$instance = new static();
if (!empty($name)) {
$instance->setName($name)->read();
}
return $instance;
}
public abstract function read();
public abstract function setName(string $name): self;
}
这里 PHP 似乎理解setName($name)
返回一个带有 type 的 Object Parent
,但是 PhpStorm 表示read()
不能在结果上调用,这本来是预期的结果。
错误消息:在主题类中找不到引用的方法。
我不确定这是否是 PHP 或 PhpStorm 中的错误,或者更有可能是我不明白自己在做什么......
我已经阅读了后期静态绑定和以下部分讨论这个问题的问题,但我不知道如何解决它:
感谢您的时间和帮助。
编辑:如下所示,我正在尝试在子类中实现,例如:
public function setName(string $name = null): user {...}
这显然不适用于self
return 但(IMO 应该) with static
,这是被禁止的。