【发布时间】:2012-05-29 05:27:46
【问题描述】:
我正在使用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() { ... }
【问题讨论】:
-
您可以将它们(两种类型)组合在一起。在某些情况下可能并不理想,但可以工作,您可能会认为它比通过 @var PHPDoc 注释手动指定类型更好。所以...
/** @return Collection|Order[] */ -
@LazyOne:即使不是完美的,这对我来说也是一个更干净的选择。您可以将此添加为答案吗?