2017-05-13 3 views
1

In allen Java IDEs, die ich verwendet habe, war Refactoring/Umbenennung ein Kinderspiel, weil IntelliJ die Projektdateien scannte und alles für mich umbenannte.PHPStorm Klassen nicht korrekt refactoring?

Ich verwende derzeit ein Projekt, in dem Hunderte von Referenzen auf eine Klasse mit Hunderten von Dateien verteilt sind. Ich möchte es umgestalten, so dass meine Compound Klasse in CompoundTag umbenannt wird.

Also anstelle von new Compound() sollte die IDE (PhpStorm) es zu neuen CompoundTag() ändern.

Also, zuerst klickte ich rechts, um die Datei, ging an Refactor -> Rename:

enter image description here

Als nächstes ich es umbenannt und stellte sicher, dass diese Optionen prüfen:

enter image description here

Schließlich nach dem Klick auf Refactor .. passiert nichts. Der Dateiname wird geändert, aber nichts anderes im Projekt wird refaktoriert. PhpStorm ändert nicht einmal den Klassennamen.

enter image description here

Wie kann ich dieses Problem beheben PhpStorm zu erhalten, um richtig meine Dateien Refactoring?

+1

können Sie versuchen, mit einem Rechtsklick auf den Namen der Klasse selbst Refactoring. Ich denke, nach dem Namen der Datei ändert es nicht genug ist, weil in einigen PHP-Projekten die Klassen nicht die gleichen Namen wie die Datei sind. Ich bin mir nicht sicher, aber ich denke, wenn Sie das Refactoring durchführen, indem Sie den Klassennamen ändern (und der Dateiname ist derselbe), ändert sich auch der Dateiname. – Edwin

Antwort

2

Sie haben Refactor | Rename für eine Datei aufgerufen.

Sie haben eine Datei umbenannt .. und möglicherweise alle Verweise auf eine Datei. Aber in PHP muss der Weltklassenname nicht unbedingt der gleiche sein wie der Dateiname .. und Sie können ziemlich viele ältere Projekte finden (besonders solche mit langer Geschichte), wo Sie vielleicht sogar mehr als eine Klasse in einer einzigen Datei sehen. WordPress ist eines der beliebtesten Beispiele. Sicherlich diesen Tagen ist es nicht üblich ist (dank KUV), aber immer noch ...

Es ist für Java (in IntelliJ) funktioniert, weil:

  • es dort häufiger ist (hat schon eine wirklich lange Zeit);
  • solche Umbenennung (Datei umbenennen = Klasse umbenennen) ist vollständig implementiert.

Für PHP ist dieser Pfad (Datei umbenennen = Klasse umbenennen) einfach noch nicht implementiert.


Was Sie für PHP tun müssen ... ist Refactor | Rename auf tatsächliche CLASS aufzurufen und nicht eine Datei.

Refactoring-Aktionen sind kontextabhängig in IDEA-basierten IDEs. Die gleiche Aktion führt also zu unterschiedlichen Aktionen, je nachdem, ob Sie sie in einer Datei (z. B. im Projektansichtsfenster) oder auf einem Element unter Caret (im Editor) aufgerufen haben).

Solche Refactoring Klasse kann mehr als nur dieser Klasse Umbenennungs:

  • es
  • Datei umbenennen
  • es Kind-Klassen und ihre Dateien umbenennen

Einige Links:

P.S. ähnliche Geschichte mit nur Verschieben von Dateien und Namespaces zu ändern - aufrufe Refactor | Move auf einer Klasse/Namensraum und nicht auf einer Datei.

+0

Hat super funktioniert! Fühlte mich wie ein Idiot, nachdem ich das gelesen hatte, heh. Ich denke, ich wollte mich nur auf die Java-Entwicklung konzentrieren und vergessen, wie entspannt PHP im Vergleich zu einer strengen Sprache wie Java ist. – JavaC3code

Verwandte Themen