__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と協力して作業する。すでに持っている情報を提供して、私たちの意見が一致するようにする。
上記のいずれかが可能ですか? もし可能であれば、どのようにですか?
追加のボーナス質問: メソッド呼び出しが連鎖されている場合を考えてみましょう。
$f = new Foo;
$f->test()->chain()->moreChain(); // potentially runs fine
マジック コールが$f->test()
適切なものを返すと仮定すると、後続の (マジック コールである可能性はありますが、必ずしもそうとは限りません) コールは正常に動作します。ただし、IDE に何を返すかを伝える方法が私の知る限りないため、test()
残りのコール チェーンもメソッドが不足しているというフラグが立てられます。さらに悪いことに、IDE はこれらの中間オブジェクトがどのクラスであるべきかを知らないため、これらの警告には「ダウングレードの重大度」設定は適用されません。
このケースにも対応できる解決策はあるでしょうか?
アップデート
マジック メソッドを@method
注釈付きで文書化することはうまくいくように見えますが、関連するバグを見つけるのに少し作業しただけだったので、このアプローチには現在いくつかの問題があると推測せざるを得ません。
妥当な時間枠内で修正されることを願っています。
ベストアンサー1
設定メニューの下にある検査、へ未定義 -> 未定義メソッドチェック__magic メソッドが存在する場合は重大度を下げる。
これにより、フラグの重大度は下がり (警告ではなく情報として)、ドキュメント チェックでは引き続き青信号が表示されます。
使用される可能性のあるすべてのメソッドについて、ターゲット クラスに PHPDoc 表記があること以外@property
に、私が認識していることは何もありません。@method