0

このような多くの質問に出くわしましたが、推奨される解決策のほとんどは、キャッシュを無効にする/再起動するか、最新バージョンにアップグレードすることです. これらのソリューションは、すべてのケースで機能するわけではありません (私のものを含む)。ほとんどの質問で、OPはこれが機能していないと述べていますが、他の誰かが問題なく実行できると報告しています。これは各個人の構成/セットアップに大きく依存していることは明らかであり、この機能が適切に機能するためには特定のものが必要です。

明らかにそれは私にとってはうまくいきませんが、私の特定の状況を解決する方法について質問を投稿するよりも、PhpStorm が関数定義の使用法を決定する方法を学ぶほうがよいと考えました. この結果が、「キャッシュの検証/再起動」および最新リリースへのアップグレード以外にこの機能が機能しない場合に確認するトラブルシューティング手順のリストになることを願っています。

この機能がどのように使用法を見つけているかを知らずに、何が機能するかを試行錯誤するしかないように感じます。この機能が機能するためには A と B が真でなければならないことがわかっていれば、A と B が実際に真であることを体系的に確認できます。

明確にするために、問題はこれです。メソッドを持つクラスがありClassA::Method1()ます。私はClassA他のクラスに構成し、ClassBそれぞれClassCが を利用しClassA::Method1()ます。ClassAofのメソッド定義に移動しようとしてMethod1います。それを右クリックし、「使用箇所の検索」を選択して、クラス内でのすべての使用を報告してくれることを期待していClassBますClassC

PhpStorm はどのように使用法を決定しますか? それは注釈に基づいていますか?名前空間?両方の組み合わせ?それともまったく別のものですか?

4

1 に答える 1

1

試行錯誤の末、これにたどり着いたのかもしれません。名前空間/タイプのヒントとPSR-4標準に従っているようです。ただし、インターフェイスにプログラミングしている場合、PhpStorm には具体的なクラス メソッドの使用法を見つける機能があるようには見えません。特に、具象クラスが抽象クラスを拡張し、抽象クラスが実装するインターフェースを拡張するインターフェースを実装する場合。これを説明するために要点 (コメント付き) を作成しました。

https://gist.github.com/dlanz/484c1584b5cbe054b9402bde56afae81

つまり、インターフェイスにプログラミングしている場合は、インターフェイスで「Find Usages」を使用する必要があります。インターフェースが別のインターフェースを拡張し、拡張インターフェースの使用法だけを見つけたいが、それが継承したメソッドについては、運が悪いか、拡張インターフェースでインターフェース化されたメソッドを再定義する必要があります。または、インターフェイスを拡張することはできませんが、場合によってはそれが理にかなっている場合もあります。

于 2017-05-18T20:33:01.693 に答える