2017-05-13 71 views
1

在我用過的所有Java IDE中,重構/重命名都很輕鬆,因爲IntelliJ會掃描項目文件併爲我重命名所有內容。PhpStorm無法正確重構類?

我目前正在使用一個項目,其中有數以百計的數百個文件傳播類的引用。我想重構它,所以我的Compound類更名爲CompoundTag

因此,代替new Compound(),IDE(PhpStorm)應將其更改爲新的CompoundTag()

所以,首先我右鍵單擊該文件,去Refactor -> Rename

enter image description here

接下來,我給它改名,並確保檢查這些選項:

enter image description here

最後,點擊重構後,沒有任何反應。文件名得到改變,但項目中沒有其他內容被重構。 PhpStorm甚至不更改類名稱。

enter image description here

我怎樣才能解決這個問題得到PhpStorm適當修改我的文件嗎?

+1

您可以嘗試通過右鍵單擊類名稱本身來重構。我認爲通過改變文件的名稱是不夠的,因爲在一些php項目中,類與它們的文件名不同。我不確定,但我認爲如果通過更改類名來進行重構(並且文件名相同),則文件名也會更改。 – Edwin

回答

2

您已在文件上調用Refactor | Rename

你所做的是你已經重命名了一個文件..並且可能所有對文件的引用。但是在PHP中,世界類的名稱不一定必須與文件名相同......並且您可能會發現很多較舊的項目(特別是那些歷史悠久的項目),甚至可能會在單個文件中看到多個類。 WordPress是最流行的例子之一。當然,這些天它不是一個常見的做法(感謝PSR中),但仍...

它爲爪哇(在的IntelliJ),因爲:

  • 這是比較常見的有(已經有一個真正長時間);
  • 這種重命名(重命名文件=重命名類)是完全實現的。

對於PHP這個路徑(重命名文件=重命名類)是根本沒有實現。


你需要PHP做什麼......是實際的類,而不是一個文件調用Refactor | Rename

重構操作在基於IDEA的IDE中依賴於上下文..因此,如果您在文件(例如,在「項目視圖」面板中)或者在插入符號下的某個元素上調用了相同的操作(在編輯器中)。

這樣的類重構能做的不僅僅是這個類重命名更多:

  • 它可以重命名文件
  • 它可以重命名子類和它們的文件

一些鏈接:

P.S.只是移動文件和更改命名空間的類似故事 - 在類/名稱空間上調用Refactor | Move而不是在文件上調用Refactor | Move

+0

工作很好!看完這個後感覺像個白癡,嘿。猜猜我只是專注於java開發,忘記了如何將PHP與Java等嚴格語言進行比較...... – JavaC3code