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