検索

ホームページ  >  に質問  >  本文

プロパティのサブクラスを返すメソッド @returns

<p>抽象クラス <code>Foo</code> と抽象ビルダー <code>FooBuilder</code></p> があります。 <pre class="brush:php;toolbar:false;">抽象クラス Foo { } 抽象クラス FooBuilder { 保護された Foo $model; /*** クラスインスタンスを返す * * @return Model //正しい戻り値の型は何ですか? ?*/ パブリック関数 get() { $this->モデルを返す; } } </pre> <p>子ビルダーで <code>get()</code> メソッドを使用したいのですが、戻り値の型が抽象 <code>Foo</code> ではなくサブクラスであることが IDE によって検出されます。 。 </p> <pre class="brush:php;toolbar:false;">class Bar extends Foo { } 抽象クラス BarBuilder { パブリック関数 __construct() { $this->model = new Bar(); } } $barBuilder = BarBuilder(); $bar = $barBuilder->get(); //タイプは「Bar」ですが、IDE はそれを「Foo」と認識します </pre> <p>PHPDoc でクラスの代わりにプロパティの静的型を返す方法はありますか? <code>@return static($this->model)</code>に似ていますか? </p> <p>一例は、<code>SomeModel::find()</code> での Laravel の Eloquent の使用法です。 IDE は、タイプが <code>SomeModel</code> である可能性があることを認識しています。ただし、<code>@return</code> には <code>Model</code> しかありません。 </p>
P粉310931198P粉310931198452日前531

全員に返信(1)返信します

  • P粉107991030

    P粉1079910302023-08-30 21:49:39

    この例では戻り値の型として Foo を使用する必要がありますが、趣味として、以下に示すように静的な戻り値の型を使用してサブインスタンスを決定することもできます。 リーリー

    返事
    0
  • キャンセル返事