33

PHPStorm IDEを使用していますが、コード インスペクションを実行すると問題が発生します。

オブジェクトのコレクションを返すメソッドがあります。Collection自体は、独自のメソッドを持ち、Traversableインターフェースを実装するオブジェクトです。

class Repository
{
    public function findByCustomer(Customer $user)
    {
        // ...
        return new Collection($orders);
    }
}

findByUser()を返すように文書化するCollectionと、コード インスペクションはこのオブジェクトのメソッドを理解しますが、コレクションに含まれるオブジェクトを理解できません。

/**
 * @return Collection
 */
public function findByCustomer() { ... }

メソッド getTotal() がクラス Collection に見つかりません

findByUser()オブジェクトのコレクションを返すように文書化するOrderと、コード インスペクションはコレクションの内容を理解するようになりましたが、Collectionそれ自体のメソッドは理解できません。

/**
 * @return Order[]
 */
public function findByCustomer() { ... }

クラス Order[] にメソッド slice() が見つかりません

Javaの構文のように、両方を同時に指定する方法はありますか?

/**
 * @return Collection<Order>
 */
public function findByCustomer() { ... }
4

2 に答える 2

63

それら(両方のタイプ)を一緒に組み合わせることができます。@var状況によっては理想的ではないかもしれませんが、動作し、 PHPDoc コメントを介して手動でタイプを指定するよりも優れていると考えることができます。

/** @return Collection|Order[] */
于 2012-05-23T09:58:15.323 に答える
12

2021.2 以降の Phpstorm では、次の構文が使用できます。

/**
 * @return Collection<Order>
 */

PhpStorm の新機能 2021.2 のスクリーンショット:
PhpStorm の新機能 2021.2 のスクリーンショット

于 2021-10-15T12:17:38.027 に答える