22

是否有一种标准方法可以在 Doctrine 项目的 docblock 注释中记录 Collection 中预期的实体类?就像是:

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

看起来 PHPDoc 现在是 docblock 注释的事实上的标准,但我找不到任何关于这个用例的提及。

4

3 回答 3

94

这是一个解决方案,使您能够对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 中就像一个魅力。

于 2013-02-06T09:21:23.497 回答
1

我认为User[]应该工作。不记得我在哪里找到的。

于 2011-09-04T12:40:02.507 回答
1

有几种不同的方法可以记录预期变量。查看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);
    }
}
于 2011-09-04T12:56:49.980 回答