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

21

Я использую 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() { ... }
@ LazyOne: даже если не идеальный, для меня это более чистый вариант. Вы можете добавить это как ответ? Benjamin
Вы можете объединить их (оба типа) вместе. Может быть не идеальным в некоторых ситуациях, но работает, и вы можете подумать, что это лучше, чем указывать тип вручную через @var PHPDoc комментарий. Так .../** @return Collection|Order[] */ LazyOne

Ваш Ответ

1   ответ
35

екоторых ситуациях, но работает, и вы можете рассмотреть это лучше, чем указание типа вручную через@var PHPDoc комментарий.

/** @return Collection|Order[] */
@ Бенджамин Пожалуйста, предоставьте простой пример кода для копирования-вставки (я бы хотел увидеть его глубже) LazyOne
В этом случае он может даже читать: вернуть коллекцию, чем можно рассматривать как массив порядка. programaths
К сожалению, в PHPStorm 8 это больше не работает: теперь он проверяет, что оба типа разделены| есть метод. Есть ли лучший способ напечатать это сейчас? Benjamin
@ LazyOne Я удивлен, что не могу повторить это сейчас, у меня были все эти проблемы с проверкой, когда я впервые открыл PHPStorm 8. Возможно, это не то, что я думал, и на самом деле связано с WI-22469 ты только что прокомментировал! Benjamin

Похожие вопросы