Чи існують інструменти, що підтримують рефакторинг PHP-коду (перейменування змінних, вилучення методів, пошук посилань на методи, ...)? Дякую.
Чи існують інструменти, що підтримують рефакторинг PHP-коду (перейменування змінних, вилучення методів, пошук посилань на методи, ...)? Дякую.
Відповіді:
Scisr - це простий, самостійний інструмент рефакторингу для PHP.
Я знаю, що це старе питання, але оскільки це одне з найкращих результатів роботи інструментів рефакторингу PHP, я думав, що додам свій новий проект до списку.
Багато моїх цілей дизайну виникло через недостатність інших згаданих тут предметів - вони пов’язані з певними середовищами розробки, або намагаються диктувати ваші практики тестування, або вимагають цілу купу ручної праці. Я сподіваюся створити загальний кращий досвід роботи в Scisr. Це просто встановити та запустити. Він намагається бути розумним, але не надто розумним. Він виконує ті завдання, які, на мою думку, найкраще піддаються автоматизації. Насолоджуйтесь!
rephactor - це інструмент автоматичного рефакторингу. Це ще трохи неповно, але воно має кілька основних рефакторингів.
В іншому випадку, хороший набір тестів - це дійсно найкращий інструмент для рефакторингу, який ви можете мати.
PHPStorm від Jetbrains підтримує рефакторинг, http://www.jetbrains.com/phpstorm/index.html
Рефакторинг "Перейменувати" працює для файлів, функцій, констант, класів, властивостей, методів, параметрів, а також локальних та глобальних змінних. Також доступні наступні рефакторинг:
і вони також пропонують безкоштовну ліцензію на проект з відкритим кодом!
IDE NetBeans має деякі можливості рефакторингу, але, здається, це не завжди працює. Однак я використовую 6.1 з раннім доступом до PHP. Я очікую, що 6.5 матиме кращі можливості рефакторингу за допомогою PHP.
https://github.com/QafooLabs/php-refactoring-browser
PHP Refactoring Browser - це нещодавній підхід до браузера Refactoring, описаний у хорошій книзі . Він міг би скористатися деякою допомогою (будь ласка, внесіть), але він має підтримку для декількох загальних рефакторингів.
На момент написання браузер підтримує:
Існує плагін SublimeText, який насправді працює. Коли я розглядаю новий код, я застосую деякі з цих простих рефакторингів, щоб допомогти мені отримати дескриптор кодової бази.
Все-таки моїм улюбленим інструментом рефакторингу є хороший старий EditPlus у поєднанні з Total Commander супершвидким пошуком файлів . (Підказка: Alt + F7) Я повністю погоджуюсь з відповіддю Марка Біка про те, що ви хочете мати повний контроль над тим, що і коли замінюється.
Кожного разу, коли мені доводиться робити деякий рефакторинг, я створюю список у загальній команді файлів, які я хочу змінити, або шукаючи за допомогою вбудованої функції, або просто виділяючи їх, а потім перетягую їх усіх до EditPlus
Editplus може шукати та замінювати поточний файл, виділення або всі відкриті файли, використовуючи звичайні текстові, регулярні та багаторядкові. Це дійсно дає вам повний контроль :)
Крім того, що корисно для рефакторингу коду, це макрореєстратор EditPlus (Ctrl + Q для початку запису макросу 1-9 та Alt + 1-9 для відтворення макросу).
Після того, як ви зрозумієте це, ви знаєте, що ви можете просто шукати змінну, ctrl + shift + (додому || кінець || клавіші зі стрілками) за допомогою коду, видаляти, копіювати / вставляти та використовувати всі ці майстри клавіатури, щоб сподобатися, наприклад, перетворити файл CSV у купу SQL-запитів протягом 30 секунд.
Я особисто віддаю перевагу PHPEclipse IDE як свій основний інструмент розробки. Але мені дуже не вистачає базового рефакторингу "замінити скрізь у проекті".
Але дуже проста команда find / sed може це легко вирішити:
find . -type f -name "*Controller.php" -print0 \
| xargs -0 sed -i 's/string1/string2/g'
Отже, використовуючи це розумно, ви можете знаходити посилання, перейменовувати, видаляти та робити будь-які маніпуляції з вихідним кодом.
До речі: ви навіть не можете запам'ятати всі ці параметри та атрибути - просто введіть один раз, а потім зателефонуйте за допомогою зворотного i-пошуку .
Сподіваюся, це допомагає.
Можливо, це просто тому, що я все ще знайомлюся з концепціями рефакторингу, але мені не подобається, коли інструмент робить це за мене.
Я все ще вважаю за краще робити більшість рефакторингу вручну, тому що це змушує мене сповільнювати і реально думати про те, чим я рухаюся і чому.
Я читав, що IDE Delphi для PHP матиме можливості рефакторингу у випуску з кодовою назвою Крокодил, запланованому на початок 2009 року. Детальніше див. Це посилання .
Спробуйте Web IDE від IntelliJ. Зараз він знаходиться на стадії EAP (альфа / бета), але я використовую його як єдину IDE протягом декількох місяців, тому він стабільний і дуже хороший.
Щойно опублікував статтю про наступний випуск Delphi для PHP, де ви можете побачити механізм рефакторингу в дії.
Підтримка рефакторингу для PHP у Netbeans 6.5 відсутня, однак вона надійде в наступній версії.
Плагін PDT eclipse також не підтримує рефакторинг.
Aptana також не підтримує рефакторинг. Я також не міг отримати визначення goto для роботи.
Я в кінцевому підсумку використовую пошук і заміну в даний час. Я теж хотів би принаймні перейменувати підтримку функції.
Наскільки мені відомо, єдиними середовищами розробки, які мають будь-яку значну підтримку рефакторингу для PHP, є Zend Studio від виробників PHP та плагін Eclipse PHP. Хоча особливості дуже основні. Ніщо, про що я знаю, не має особливостей таких продуктів, як Resharper для C # тощо.
PDT для Eclipse підтримує деякі основні функції рефакторингу (про які я знаю). Ви можете перейменовувати класи і автоматично перейменовувати їх, коли на них посилаються, і я думаю, ви навіть можете переміщати файли та змінювати їх включення / вимагати посилань.