シナリオ私は私の関数は戻り値の型City
を持っていると言うことPHP7タイプヒンティングを使用していPhpStormは別の
の延長として戻り値の型を認識しません。
public function getCityById(int $city_id) : City { ... }
この関数では、ファインダを実行した結果を返します。
return $this->city_finder->findById($city_id);
しかしfindById()
機能がAbstractModel
を返すためPhpStormは、ここに文句を言います。
しかし、私はclass City extends AbstractModel
ですが、これは問題ではありません。しかし、PhpStormはこれを認識していないようであり、警告文を強調表示します。
重要な警告であるため、このタイプの警告(検査を無効にする)をミュートしたくありません。
質問
私はPhpStormこのreturn文が戻り値の型を満足することを認識させることができますか?
追加情報
回避策の一つは、変数を抽出し、それに注釈を付け、そのようにすることです。この時点で
/** @var City $city */
$city = $this->city_finder->findById($city_id);
return $city;
、それはそれについて私に警告し停止しますが、それはのように思えます余分な行は、IDEで警告をミュートするためだけに存在するため、回避する必要があります。
ファンクションクラスがモデルごとに生成されるため、findById()
関数は間違った型を返さないように保護されています。
$this->city_finder = $this->orm->getFinder(City::class);
//...
$city = $city_finder->findById(...);
あなたの 'city_finder'クラスの' findById() 'メソッドのシグニチャを(そのクラスのPHPDocコメントの' @ method'タグを使って)オーバーライドし、このメソッドが具体的な 'City'クラスを返すようにすることができます://stackoverflow.com/a/43112745/783119)。もう1つのアイデア - https://stackoverflow.com/a/44913283/783119(ここにも当てはまるかどうかわからない) – LazyOne