Gibt es Tools, die das Refactoring von PHP-Code unterstützen (Umbenennen von Variablen, Extrahieren von Methoden, Suchen von Methodenreferenzen, ...)? Vielen Dank.
Gibt es Tools, die das Refactoring von PHP-Code unterstützen (Umbenennen von Variablen, Extrahieren von Methoden, Suchen von Methodenreferenzen, ...)? Vielen Dank.
Antworten:
Scisr ist ein einfaches, eigenständiges Refactoring-Tool für PHP.
Ich weiß, dass dies eine alte Frage ist, aber da es sich um eine der besten Übersichten zu PHP-Refactoring-Tools handelt, dachte ich, ich würde mein neues Projekt zur Liste hinzufügen.
Viele meiner Entwurfsziele sind auf die Unzulänglichkeiten anderer hier genannter Elemente zurückzuführen - sie sind an bestimmte IDEs gebunden oder versuchen, Ihre Testpraktiken zu diktieren, oder erfordern eine ganze Reihe von manueller Arbeit. Ich hoffe, eine insgesamt bessere Erfahrung in Scisr zu schaffen. Es ist einfach zu installieren und auszuführen. Es versucht klug zu sein, aber nicht zu klug. Es erledigt die Aufgaben, die ich gefunden habe, um sich am besten für die Automatisierung zu eignen. Genießen!
rephactor ist ein automatisches Refactoring-Tool. Es ist immer noch etwas unvollständig, hat aber einige grundlegende Umgestaltungen.
Andernfalls ist eine gute Testsuite wirklich das beste Tool für das Refactoring, das Sie haben können.
PHPStorm von Jetbrains unterstützt Refactoring unter http://www.jetbrains.com/phpstorm/index.html
Das Umbenennungs-Refactoring funktioniert für Dateien, Funktionen, Konstanten, Klassen, Eigenschaften, Methoden, Parameter sowie lokale und globale Variablen. Es stehen auch folgende Refactorings zur Verfügung:
und sie bieten auch eine kostenlose Lizenz für Open Source-Projekte an!
Die NetBeans-IDE verfügt über einige Refactoring-Funktionen, scheint jedoch nicht immer zu funktionieren. Ich benutze jedoch 6.1 mit frühem PHP-Zugang. Ich erwarte, dass 6.5 mit PHP bessere Refactoring-Funktionen bietet.
https://github.com/QafooLabs/php-refactoring-browser
Der PHP Refactoring Browser ist eine neuere Version des im guten Buch beschriebenen Refactoring Browsers . Es könnte Hilfe gebrauchen (bitte beitragen), aber es unterstützt mehrere gängige Refactorings.
Zum Zeitpunkt des Schreibens unterstützt der Browser:
Es gibt ein SublimeText-Plugin, das tatsächlich funktioniert. Wenn ich mir neuen Code anschaue, werde ich einige dieser einfachen Refactorings anwenden, um die Codebasis in den Griff zu bekommen.
Mein Lieblings-Refactoring-Tool ist immer noch das gute alte EditPlus in Kombination mit der superschnellen Dateisuche von Total Commander . (Hinweis: Alt + F7) Ich stimme der Antwort von Mark Biek voll und ganz zu, dass Sie die volle Kontrolle darüber haben möchten, was wo und wann ersetzt wird.
Wann immer ich ein Refactoring durchführen muss, erstelle ich eine Liste in totaler Reihenfolge der Dateien, die ich ändern möchte, indem ich entweder mit der eingebauten Funktion suche oder sie einfach auswähle und sie dann alle auf EditPlus ziehe
Editplus kann die aktuelle Datei, eine Auswahl oder alle geöffneten Dateien mit normalem Textabgleich, Regex-Abgleich oder mehrzeiligem Abgleich durchsuchen und ersetzen . Es gibt dir wirklich die volle Kontrolle :)
Für das Code-Refactoring ist außerdem der Macro Recorder von EditPlus nützlich (Strg + Q, um die Aufnahme von Makro 1-9 zu starten, und Alt + 1-9, um ein Makro abzuspielen).
Sobald Sie den Dreh raus haben, wissen Sie, dass Sie einfach nach einer Variablen suchen können, Strg + Umschalt + (Home || Ende || Pfeiltasten) durch Ihren Code, löschen, kopieren / einfügen und alle Tastatur-Assistenten verwenden können, um zu mögen, Konvertieren Sie beispielsweise eine CSV-Datei innerhalb von 30 Sekunden in eine Reihe von SQL-Abfragen.
Ich persönlich bevorzuge PHPEclipse IDE als mein primäres Entwicklungswerkzeug. Aber ich vermisse wirklich das grundlegende Refactoring "überall im Projekt ersetzen".
Aber ein sehr einfacher Befehl find / sed kann es leicht lösen:
find . -type f -name "*Controller.php" -print0 \
| xargs -0 sed -i 's/string1/string2/g'
Wenn Sie dies also intelligent verwenden, können Sie Referenzen finden, umbenennen, entfernen und jede Art von Manipulationen mit dem Quellcode vornehmen.
Übrigens: Sie können sich nicht einmal an all diese Parameter und Attribute erinnern - geben Sie sie einfach einmal ein und rufen Sie sie dann über die umgekehrte Suche auf .
Hoffe das hilft.
Vielleicht liegt es nur daran, dass ich mich immer noch mit den Konzepten des Refactorings vertraut mache, aber ich mag es nicht, wenn ein Tool dies für mich erledigt.
Ich ziehe es immer noch vor, die meisten Umgestaltungen manuell durchzuführen, da ich dadurch langsamer werden und wirklich darüber nachdenken muss, was ich bewege und warum.
Ich habe gelesen, dass die IDE Delphi für PHP Refactoring-Funktionen in der Version mit dem Codenamen Crocodile haben wird, die für Anfang 2009 geplant ist. Weitere Informationen finden Sie unter diesem Link .
Probieren Sie die Web-IDE von IntelliJ aus. Es befindet sich derzeit in der EAP-Phase (Alpha / Beta), aber ich verwende es mehrere Monate lang als einzige IDE, sodass es stabil und sehr gut ist.
Wir haben gerade einen Artikel über die nächste Version von Delphi für PHP veröffentlicht, in dem Sie die Refactoring-Engine in Aktion sehen können.
Es gibt keine Refactoring-Unterstützung für PHP in Netbeans 6.5, die jedoch in zukünftigen Versionen verfügbar sein wird.
Das PDT Eclipse Plugin unterstützt auch kein Refactoring.
Aptana unterstützt auch kein Refactoring. Ich konnte auch nicht dazu kommen, dass die Definition funktioniert.
Am Ende verwende ich derzeit Suchen und Ersetzen. Auch ich möchte zumindest die Funktionsunterstützung umbenennen.
Soweit ich weiß, sind die einzigen IDEs, die eine signifikante Refactoring-Unterstützung für PHP bieten, Zend Studio von den Herstellern von PHP und das Eclipse PHP-Plugin. Obwohl die Funktionen sehr einfach sind. Nichts, von dem ich weiß, hat die Eigenschaften von Produkten wie Resharper für C # usw.
PDT für Eclipse unterstützt einige grundlegende Umgestaltungen (die ich kenne). Sie können Klassen umbenennen und automatisch umbenennen lassen, wenn auf sie verwiesen wird. Ich denke, Sie können sogar Dateien verschieben und ihre Include- / Require-Referenzen ändern.