Инструменты для рефакторинга PHP-кода

Есть ли инструменты, которые поддерживают рефакторинг 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, описанный в хорошей книге . Он может использовать некоторую помощь (просьба внести свой вклад), но он поддерживает несколько общих рефакторингов.

    Начиная с написания, браузер поддерживает:

    • Метод извлечения
    • Переименовать локальную переменную
    • Преобразование локальных переменных в экземпляр
    • Переименовать класс и пространства имен
    • Оптимизировать использование выражений (для PHP)

    Существует плагин 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, где вы можете увидеть механизм рефакторинга в действии.

    http://blogs.embarcadero.com/joseleon/2010/06/09/delphi-for-php-next-release-early-preview-15-refactoring/

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

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