22

Doctrine プロジェクトの docblock コメントでコレクション内のエンティティの期待されるクラスを文書化する標準的な方法はありますか? 何かのようなもの:

/**
 * @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 に答える