Я использую среду PHPStorm и сталкиваюсь с проблемами при запуске проверки кода.
У меня есть метод, который возвращает коллекцию объектов. Сама Collection
– это объект, который имеет свои собственные методы и реализует интерфейс Traversable :
class Repository { public function findByCustomer(Customer $user) { // ... return new Collection($orders); } }
Если я findByUser()
для возврата Collection
, проверка кода findByUser()
методы этого объекта, но не понимает, какие объекты содержит коллекция:
/** * @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[] */