【发布时间】:2026-02-05 00:10:01
【问题描述】:
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)返回一个类型为Parent的Object,但PhpStorm表示不能在结果上调用read(),这本来是预期的结果。
错误消息:在主题类中找不到引用的方法。
我不确定这是 PHP 还是 PhpStorm 中的错误,或者更有可能是我不明白自己在做什么......
我已阅读后期静态绑定和以下部分讨论此问题的问题,但我不知道如何解决它:
感谢您的时间和帮助。
编辑:如下所示,我正在尝试在子类中实现:
public function setName(string $name = null): user {...}
这显然不适用于 self return 但(IMO 应该)使用 static,这是被禁止的。
【问题讨论】:
标签: php inheritance phpstorm late-static-binding