私は、魔法のように実装されたメソッド (__call
およびを使用__callStatic
) を介して機能を公開するいくつかのクラスを含む大きなコードベースに座っています。例えば:
class Foo {
public function __call($name, $parameters) {
echo "You called $name().\n";
}
}
$f = new Foo;
$f->test(); // runs fine, but PhpStorm flags as a warning
問題は、PhpStorm がtest()
メソッドが存在しないと考えているため、呼び出しサイトで警告を出すことです。もちろん、コードは期待どおりに実行され、動作するため、これは少し面倒です。
「__magic メソッドがクラスに存在する場合は重大度をダウングレードする」オプションをチェックして、重大度をすでに下げていますが、次のいずれかを希望します。
- 特定のクラスに対してのみこの機能を完全に無効にする、または
- IDE に反対するのではなく、IDE と協力してください -- 私たちの意見が一致するように、私が既に持っている情報を IDE に提供してください
上記のいずれかが可能ですか?もしそうなら、どのように?
追加のボーナス質問: メソッド呼び出しが連鎖している場合を考えてみましょう。
$f = new Foo;
$f->test()->chain()->moreChain(); // potentially runs fine
への魔法の呼び出しが適切な何かを返すと仮定すると$f->test()
、後続の (おそらく、しかし必ずしも魔法の) 呼び出しも正常に機能します。ただし、何が返されたかを IDE に伝える方法がわからないためtest()
、コール チェーンの残りの部分にも欠落しているメソッドがいっぱいあるというフラグが立てられます。さらに悪いことに、「ダウングレード重大度」設定はこれらの警告には適用されません。これは、IDE がこれらの中間オブジェクトがどのクラスであるべきかを認識していないためです。
このケースもカバーできる解決策はありますか?
アップデート
注釈を使用して魔法のメソッドを文書化する@method
ことは機能しているように見えますが、これらの関連するバグに遭遇するのに少しの作業しかかからなかったため、現在、このアプローチにはいくつかの問題があると想定する必要があります。
彼らが妥当な時間枠でそれらを修正することを願っています.