2017-05-18 34 views
0

我遇到過很多這樣的問題,但大多數建議的解決方案都是使緩存失效/重新啓動或升級到最新版本。這些解決方案甚至不適用於任何情況(包括我的)。在大多數問題中,執行理事會聲稱這不起作用,而其他人則表示他們可以毫無問題地做到這一點。對我來說這似乎很清楚,這很大程度上取決於每個人的配置/設置,並且爲了使此功能正常工作,必須安裝某些功能。PhpStorm如何找到函數定義的用法?

顯然它不適合我,但不是發佈一個關於如何解決我的特定情況的問題,我認爲了解PhpStorm如何確定函數定義的用法會更好。希望結果將是一個排除故障的步驟列表,以檢查此功能是否適用於超出「驗證緩存/重新啓動」並升級到最新版本的人員。

我覺得不知道這個功能是如何找到用法的,我們只用試驗和錯誤就可以看到它的工作原理。如果我們知道A和B必須是正確的才能使此功能有效,那麼我們可以系統地確保A和B事實上是對的。

爲了清楚起見,問題是這樣的。我有一種方法ClassA::Method1()。我編寫ClassA到其他類,ClassBClassC - 其中每個使用ClassA::Method1()。我試圖去Method1ClassA的方法定義,右鍵點擊它,選擇「查找用法」,並期望它在類別ClassBClassC(或任何其他碰巧發生的用它)。

PhpStorm如何確定用法?它是基於註釋嗎?命名空間?兩者結合?還是其他什麼東西?

回答

1

我可能通過反覆試驗瞭解了這一點。它似乎是通過命名空間/類型提示和PSR-4標準進行的。但是,如果您正在對接口進行編程,PhpStorm似乎沒有能力找到具體類方法的用法。特別是當具體類擴展抽象類並實現擴展抽象類實現的接口的接口時。我已經開發了一個要點(有評論)來說明這一點。

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

總之,如果你是一個對接口編程,你必須使用「查找用法」的接口。如果一個接口擴展了另一個接口,並且您只想找到擴展接口的用法,但對於它繼承的方法 - 或者運氣不好,或者您必須在擴展接口中重新定義接口方法。或者你可以永遠不要擴展接口,但有時它是有意義的。

+0

只要我被允許,我會盡快接受答案。 –