PHPStorm:正确的PHPDoc对象集合?

时间:2012-05-22 17:14:41

标签: php phpdoc phpstorm

我正在使用PHPStorm IDE,并在运行代码检查时遇到麻烦。

我有一个返回对象集合的方法。 Collection本身是一个对象,它有自己的方法,并实现Traversable接口:

class Repository
{
    public function findByCustomer(Customer $user)
    {
        // ...
        return new Collection($orders);
    }
}

如果我记录findByUser()以返回Collection,则代码检查会理解此对象上的方法,但不了解该集合包含的对象:

/**
 * @return Collection
 */
public function findByCustomer() { ... }

Method getTotal() not found in class Collection

如果我记录findByUser()以返回Order个对象的集合,则代码检查现在可以了解集合中的内容,但不了解Collection本身的方法:

/**
 * @return Order[]
 */
public function findByCustomer() { ... }

Method slice() not found in class Order[]

有没有办法同时指定两者,比如Java的语法?

/**
 * @return Collection<Order>
 */
public function findByCustomer() { ... }

1 个答案:

答案 0 :(得分:38)

您可以将它们(两种类型)组合在一起。在某些情况下可能并不理想,但是可以考虑通过@var PHPDoc评论来手动指定类型。

/** @return Collection|Order[] */