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