Инструменты для рефакторинга 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 в течение нескольких месяцев, поэтому он стабилен и очень хорош.

Ответ 14

PDT для Eclipse поддерживает базовый рефакторинг (о котором я знаю). Вы можете переименовывать классы и автоматически переименовывать их, когда они ссылаются, и я думаю, что вы даже можете переместить файлы и изменить их ссылки на include/require.

Ответ 15

Насколько мне известно, единственные IDE, имеющие значительную поддержку Refactoring для PHP, Zend Studio от создателей PHP и Плагин Eclipse PHP. Хотя функции очень просты. Ничто из того, что я знаю, не имеет особенностей таких продуктов, как Resharper для С# и т.д.