php laravel 像通用类型提示一样雄辩

问题描述 投票:0回答:0
class QueryBuilder {
   public function get(): SalesforceObject[] {
      ...
   }
}

class SalesforceObject {
   public function query(): QueryBuilder {
       return new QueryBuilder();
   }
}

class SalesforceAccount extends SalesforceObject {
    public string $Id;
    public string $Name;
}


$accounts = SalesforceAccount::query()->get();

foreach($accounts as $account) {
   $account-> ...
}

我想在我的 IDE 中自动完成 $account 的属性,而不必在 foreach 中添加文档块。

是否有某种方法可以在 SalesforceAccount 类上定义 QueryBuilder 类的 ->get() 将返回 SalesforceAccount[]?

我在 laravel 中使用 eloquent,它使用相同的架构并且我有自动完成功能,所以我想应该有一些方法可以用 phpdocs 来实现这个。

我认为在本地执行此操作的唯一方法是定义一个扩展 QueryBuilder 且仅用于 SalesforceAccount 的专用类,以便我可以设置返回值类型提示。但是,我想避免为每个对象类添加单独的查询构建器类的需要。

php generics type-hinting
© www.soinside.com 2019 - 2024. All rights reserved.