Doctrine 集合的文档块

2022-08-30 18:39:16

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

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

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


答案 1

下面是一个解决方案,它使您能够在方法和对象方法上都具有自动完成功能: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中就像一个魅力。


答案 2

有几种不同的方法来记录预期的变量。查看 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);
    }
}

推荐