Есть ли инструменты, которые поддерживают рефакторинг PHP-кода (переименование переменных, извлечение методов, поиск ссылок на методы,...)? Спасибо.
Инструменты для рефакторинга PHP-кода
Ответ 1
Scisr - простой, автономный инструмент рефакторинга для PHP.
Я знаю, что это старый вопрос, но поскольку он является одним из лучших истолкований инструментов рефакторинга PHP, я думал, что добавлю свой новый проект в список.
Многие из моих целей дизайна возникли из-за неадекватности других пунктов, упомянутых здесь, - они привязаны к определенным IDE или пытаются диктовать ваши методы тестирования или требуют целого набора ручного труда. Я надеюсь создать общий опыт в Scisr. Он прост в установке и запуске. Он пытается быть умным, но не слишком умным. Я выполняю задачи, которые, как я нашел, лучше всего подходят для автоматизации. Наслаждайтесь!
Ответ 2
rephactor - это инструмент автоматического рефакторинга. Он по-прежнему немного неполный, но он имеет несколько базовых рефакторингов.
Else, хороший набор тестов действительно лучший инструмент для рефакторинга, вы можете иметь.
Ответ 3
PHPStorm от Jetbrains поддерживает рефакторинг, http://www.jetbrains.com/phpstorm/index.html
Рефакторинг Rename работает для файлов, функций, констант, классов, свойств, методов, параметров и локальных и глобальных переменных. Также доступны следующие рефакторинги:
- Ввести переменную
- Ввести константу
- Введите поле
- Встроенная переменная
и они предлагают бесплатную лицензию на проект с открытым исходным кодом!
Ответ 4
В среде IDE NetBeans есть некоторые возможности рефакторинга, но это не всегда работает. Тем не менее, я использую 6.1 с ранним доступом к PHP. Я ожидаю, что 6.5 будет иметь лучшие возможности рефакторинга с PHP.
Ответ 5
https://github.com/QafooLabs/php-refactoring-browser
PHP Refactoring Browser - это более недавний подход к браузеру Refactoring, описанный в хорошей книге. Он может использовать некоторую помощь (просьба внести свой вклад), но он поддерживает несколько общих рефакторингов.
С момента написания браузер поддерживает:
- Метод извлечения
- Переименовать локальную переменную
- Преобразование переменной Local в экземпляр
- Переименовать класс и пространство имен
- Оптимизировать использование выражений (для PHP)
Существует плагин SublimeText, который фактически работает. Когда я ищу новый код, я применил бы некоторые из этих простых рефакторингов, чтобы помочь мне получить дескриптор на базе кода.
Ответ 6
Может быть, это только потому, что мне все еще нравится концепция рефакторинга, но мне не нравится, когда инструмент делает это для меня.
Я по-прежнему предпочитаю делать рефакторинг вручную, потому что он заставляет меня замедляться и действительно думать о том, что я двигаюсь и почему.
Ответ 7
Я лично предпочитаю PHPEclipse IDE в качестве основного инструмента для разработки. Но я действительно скучаю по базовому "замене везде в проекте" рефакторинга там.
Но очень простая команда find/ sed может легко решить эту задачу:
find . -type f -name "*Controller.php" -print0 \
| xargs -0 sed -i 's/string1/string2/g'
Таким образом, используя это разумно, вы можете найти ссылки, переименовать, удалить и сделать какие-либо манипуляции с исходным кодом.
Кстати: вы даже не можете запомнить все эти параметры и атрибуты - просто введите его один раз, а затем вызовите его через обратный i-поиск.
Надеюсь, что это поможет.
Ответ 8
Еще мой любимый инструмент рефакторинга хорош ol < EditPlus в сочетании с Total Commander супер быстрый поиск файлов. (Подсказка: Alt + F7) Я полностью согласен с ответом Марка Бика, что вы хотите иметь полный контроль над тем, что заменено где и когда.
Всякий раз, когда мне нужно сделать какой-то рефакторинг, я создаю список в общем командоре файлов, которые я хочу изменить, либо выполнив поиск со встроенной функцией, либо просто выбрав их, а затем перетащить их все в EditPlus
Editplus может выполнять поиск и замену через текущий файл, выбор или все открытые файлы, используя обычное текстовое сопоставление, сопоставление регулярных выражений или многострочное сопоставление. Это действительно дает вам полный контроль:)
Кроме того, что полезно для рефакторинга кода, это EditPlus Macro Recorder (Ctrl + Q, чтобы начать запись макроса 1-9 и Alt + 1-9 для воспроизведения макроса).
Как только вы получите это, вы знаете, что вы можете просто искать переменную, Ctrl + shift + (home || end || клавиши со стрелками) через свой код, удалять, копировать/вставлять и использовать al, что клавиатурное волшебство например, преобразовать CSV файл в кучу SQL-запросов в течение 30 секунд.
Ответ 9
Zend Studio может немного реконфигурировать.....
Ответ 10
Нет поддержки рефакторинга для PHP в Netbeans 6.5, но в будущем она будет доступна.
Плагин PDT для eclipse также не поддерживает рефакторинг.
Aptana также не поддерживает рефакторинг. Я не мог заставить определение goto работать.
В конечном итоге я использую поиск и замену. Мне тоже хотелось бы хотя бы переименовать функцию поддержки.
Ответ 11
Я читал, что IDE Delphi для PHP будет иметь возможности рефакторинга в версии под кодовым названием Crocodile, запланированной на начало 2009 года. См. эта ссылка для Детали.
Ответ 12
Попробуйте веб-IDE от IntelliJ. Это сейчас на стадии EAP (альфа/бета), но я использую его как единственную IDE в течение нескольких месяцев, поэтому он стабилен и очень хорош.
Ответ 13
Только что опубликовала статью о следующей версии Delphi для PHP, где вы можете увидеть механизм рефакторинга в действии.
Ответ 14
PDT для Eclipse поддерживает базовый рефакторинг (о котором я знаю). Вы можете переименовывать классы и автоматически переименовывать их, когда они ссылаются, и я думаю, что вы даже можете переместить файлы и изменить их ссылки на include/require.
Ответ 15
Насколько мне известно, единственные IDE, имеющие значительную поддержку Refactoring для PHP, Zend Studio от создателей PHP и Плагин Eclipse PHP. Хотя функции очень просты. Ничто из того, что я знаю, не имеет особенностей таких продуктов, как Resharper для С# и т.д.