Я использую 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() { ... }
![Method slice() not found in class Order[]](/img/19ff17de1de370734c6e62413e634004.png)
Есть ли способ указать оба одновременно, что-то вроде синтаксиса Java?
/**
* @return Collection<Order>
*/
public function findByCustomer() { ... }