Подтвердить что ты не робот

Докблоки для коллекций Doctrine

Существует ли стандартный способ документировать ожидаемый класс сущностей внутри коллекции в комментарии docblock в проекте Doctrine? Что-то вроде:

/**
 * @var Collection<User>
 */
protected $users;

Похоже, что PHPDoc является стандартом де-факто для аннотаций докблока, но я не мог найти упоминания для этого случая использования.

4b9b3361

Ответ 1

Я думаю, что User[] должен работать. Не помню, где я нашел это.

Ответ 2

Вот решение, которое позволяет иметь автозаполнение как в методах Collection, так и в методах ваших объектов:

/**
 * @param Collection|User[] $users
 */
public function foo($users)
{
    $users-> // autocompletion on Collection methods works

    foreach ($users as $user) {
        $user-> // autocompletion on User methods work
    }
}

Он работает как прелесть в PhpStorm по крайней мере.

Ответ 3

Существует несколько различных способов документирования ожидаемых переменных. Посмотрите документацию phpDoc для получения полного списка доступных тегов.

class MyClass
{
    /**
     * Users collection
     * @var \Doctrine\ORM\ArrayCollection
     */
    protected $users;

    /**
     * My method that doesn't do much
     * @param \Doctrine\ORM\ArrayCollection $users
     * @return void
     */
    public function myMethod(\Doctrine\ORM\ArrayCollection $users)
    {
        /** @var \Entities\Users $user */
        $user = current($this->users);
    }
}