PHPStorm: правильный PHPDoc для коллекции объектов?

Я использую среду PHPStorm и сталкиваюсь с проблемами при запуске проверки кода.

У меня есть метод, который возвращает коллекцию объектов. Сама Collection – это объект, который имеет свои собственные методы и реализует интерфейс Traversable :

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

Если я findByUser() для возврата Collection , проверка кода findByUser() методы этого объекта, но не понимает, какие объекты содержит коллекция:

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

Метод getTotal () не найден в классе Collection

Если я findByUser() чтобы вернуть коллекцию объектов Order , проверка кода теперь понимает, что находится внутри коллекции, но не методы самой Collection :

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

Метод slice () не найден в классе Order []

Есть ли способ указать оба в то же время, что-то вроде синтаксиса Java?

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

Вы можете объединить их (оба типа) вместе. Не может быть идеальным в некоторых ситуациях, но работает, и вы можете рассмотреть его лучше, чем вручную указывать тип через комментарий @var PHPDoc.

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