Докблоки для коллекций Doctrine - PullRequest
17 голосов
/ 04 сентября 2011

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

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

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

Ответы [ 3 ]

80 голосов
/ 06 февраля 2013

Вот решение, которое позволяет вам выполнять автозаполнение как для методов 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, по крайней мере.

1 голос
/ 04 сентября 2011

Есть несколько способов документировать ожидаемые переменные.Посмотрите документацию 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);
    }
}
1 голос
/ 04 сентября 2011

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

...