초록 기린

Введение в инструмент обновления PHP версий Rector

  • Язык написания: Корейский
  • Страна: Все страныcountry-flag
  • ИТ

Создано: 2024-03-24

Создано: 2024-03-24 23:17

Просматривая сайт на Gnuboard5, который является корейской CMS на PHP, я наткнулся на несколько постов, в которых пользователи жаловались на трудности, возникшие после обновления версии PHP из-за устаревшей грамматики и версий.

Ища решение, я...

нашёл на Reddit информацию о инструменте Rector, который помогает с миграцией, и решил поделиться с вами его использованием.



После выхода PHP 7.0 в 2015 году появились инструменты для миграции PHP, такие как php cs-fixer, rector и другие.

Rector, на мой взгляд, более удобен в использовании.

Rector (произносится как «Ректор») проверяет код PHP версий от 5.3 до 8.2 на соответствие заданной версии и исправляет синтаксические ошибки.


К сожалению, Rector — это статический анализатор, поэтому он не может обнаруживать ошибки, возникающие во время выполнения.



Для работы Rector необходим Composer — менеджер пакетов PHP.

1. Установите Composer.

2. Установите Rector в папку текущего проекта.

3. Создайте файл конфигурации rector.php.



Настройка rector.php

Для лучшего понимания давайте определим ситуацию.

Предположим, что исходный код написан на PHP 5.3, а цель миграции — PHP 7.4. Мы будем использовать эту ситуацию для примера.

Версия Rector — 1.0.3.


RectorConfig::config() настраивает папку с исходным кодом и версию PHP.

Функция withPhpSets задаёт набор функций PHP, которые необходимо обновить.


Если версия PHP, на которой выполняется Rector, — PHP 8.0,


можно задать нужную версию PHP таким образом.

Однако, если версия PHP, на которой выполняется Rector, — PHP 7.4 или ниже


нельзя использовать синтаксис именованных параметров в функциях, поэтому true нужно устанавливать в соответствии с нужной версией.

Rector поддерживает PHP 8.3, поэтому для указания PHP 7.4 необходимо сделать следующее:


->withPaths([
__DIR__ , // Директория, в которой находится rector.php.
])



Укажите правила и папки, которые не нужно применять.

Для папок используйте '/имя_папки/*'.

Для файлов — 'имя_файла'.


Я добавил правило "SensitiveConstantNameRector".

Rector не может найти undefined index в массивах PHP и воспринимает их как константы, пытаясь неправильно изменить код. Поэтому я добавил его в список исключений.

Эти правила относятся к стилю кода, поэтому я исключил их.


Выполнение

Есть два варианта.

Эта команда только выведет в консоль список кода, который нужно изменить.

Чем больше исходного кода, тем больше оперативной памяти требуется, поэтому используйте опцию --memory-limit=2G для задания лимита используемой памяти.


Эта команда сразу же изменит исходный код.

Так как опций очень много, возможно, будут применены нежелательные опции, поэтому необходимо использовать Git для отслеживания изменений.



Комментарии0

29.11.2024 Поздние новости: платная подписка на Replit / Хорошие привычки в разработке ПОВ записи блога от 29 ноября 2024 года мы делимся опытом использования платной подписки на Replit и представляем 10 хороших привычек в разработке программного обеспечения. Обсуждаются стратегии эффективного кодирования и рефакторинга, а также важность тес
Charles Lee
Charles Lee
Charles Lee
Charles Lee

November 29, 2024

Завершение настройки многоязычного веб-сайта!Многоязычный веб-сайт создан за 33 дня! После решения проблемы задержки перевода, связанной с изменением местоположения сервера, все настройки завершены. Рекомендуется отправлять карту сайта после завершения всех настроек.
aghkuh1
aghkuh1
aghkuh1
aghkuh1

January 29, 2025

Опыт участия в проектах с открытым исходным кодомЭта статья делится опытом участия в проектах с открытым исходным кодом и вдохновляет на преодоление страха и совершение первого шага. Она рассказывает о процессе обретения уверенности и роста, начиная с небольших улучшений.
seungwon
seungwon
seungwon
seungwon

May 3, 2025

[Не из IT, но хочу стать разработчиком] 7. Что поможет и что не поможет при поиске работы в новой сфереПри трудоустройстве разработчиком без профильного образования, ведение технического блога не очень эффективно, но использование Git и получение сертификата специалиста по обработке информации будут полезны.
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

March 29, 2024