プロパティのサブクラスを返すメソッド @returns
P粉310931198
2023-08-29 23:28:05
<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>
この例では戻り値の型として Foo を使用する必要がありますが、趣味として、以下に示すように静的な戻り値の型を使用してサブインスタンスを決定することもできます。 リーリー