php - PHP:推断此方法链的返回类型
问题描述
我正在使用 PHPStorm。例如,我有一个简单的查询类,其中包含各种方法来处理排序、过滤等。它最终返回构造函数中传递的类的实例。
class AnimalQuery {
private $classString;
public function __construct(string $classString){
$this->classString = $classString;
}
public function where(string $key, string $val): AnimalQuery {
// Database things would happen here
return $this;
}
public function orderBy(string $val): AnimalQuery {
// Database things would happen here
return $this;
}
public function first() {
// Database things would happen here
return new $this->classString();
}
}
还有一个充当模型的类,例如:
class Dog {
public static function query(): AnimalQuery {
return new AnimalQuery(static::class);
}
public function bark() {
echo 'Woof!';
}
}
可以这样调用:
$doggo = Dog::query()->where('name', 'Fido')->orderBy('species')->first();
$doggo->bark();
这确实返回了一个 Dog 的实例。但是,PHPStorm 当然不明白这一点。有没有办法通过第一个方法返回在 AnimalQuery 的构造函数中传递的类的实例来提示 PHPStorm?
在 Typescript 中,我可能为此使用了泛型,但 PHP 中不存在这些泛型。
解决方案
推荐阅读
- bootstrap-4 - 最小化侧边栏中的默认 Blazor NavMenu
- apache-kafka - kafka 连接 -> pubsub -> 数据流管道数据丢失
- laravel - 失败时如何测试某个作业是否在一定时间后被释放?
- c# - IIS 到 SQL Server 的连接字符串
- angular - 打字稿变量多类型
- azure - 负载均衡器运行状况探测的 Azure Monitor 警报不起作用
- excel - 如何比较时间值?
- python - 无法从内部获取文本/数据使用 BeautifulSoup
- python-3.x - 在 minmaxscalar 期间超出最大递归深度
- python - TypeError: 不支持的操作数类型 -: 'generator' 和 'NoneType'