我正在使用PHPStorm IDE,并在运行代码检查时遇到麻烦。
我有一个返回对象集合的方法。 Collection
本身是一个对象,它有自己的方法,并实现Traversable接口:
class Repository
{
public function findByCustomer(Customer $user)
{
// ...
return new Collection($orders);
}
}
如果我记录findByUser()
以返回Collection
,则代码检查会理解此对象上的方法,但不了解该集合包含的对象:
/**
* @return Collection
*/
public function findByCustomer() { ... }
如果我记录findByUser()
以返回Order
个对象的集合,则代码检查现在可以了解集合中的内容,但不了解Collection
本身的方法:
/**
* @return Order[]
*/
public function findByCustomer() { ... }
有没有办法同时指定两者,比如Java的语法?
/**
* @return Collection<Order>
*/
public function findByCustomer() { ... }
答案 0 :(得分:38)
您可以将它们(两种类型)组合在一起。在某些情况下可能并不理想,但是可以考虑通过@var
PHPDoc评论来手动指定类型。
/** @return Collection|Order[] */