Обновяването на PHP често се отлага, защото изглежда като сложен и рисков процес. Колкото повече остарява един проект, толкова повече промени са необходими, а ръчното им нанасяне може да отнеме дни или дори седмици.
За щастие съществуват инструменти, които могат да автоматизират голяма част от тази работа. Един от най-популярните е Rector.
Rector е инструмент за автоматизиране на PHP миграции, който работи само в локална среда за разработка (или в CI/CD pipeline). Ако Вашият сайт е WordPress и използвате споделен хостинг или Хостинг за WordPress, вижте Защо и как да активираме нова версия на PHP за WordPress?
Защо изобщо да обновяваме PHP?
Използването на актуална версия на PHP носи редица предимства:
- по-висока сигурност;
- значително по-добра производителност;
- достъп до новите възможности на езика;
- по-добра съвместимост със съвременните библиотеки и инструменти.
Повече по темата можете да прочетете в предишната ни статия: Защо е важно да обновите PHP: сигурност, скорост и бъдеща поддръжка
Какво представлява Rector?
Rector е инструмент, който анализира PHP кода и автоматично извършва рефакториране и миграция към по-нови версии на PHP. Освен че модернизира кода, той прилага голяма част от необходимите промени, така че разработчикът да не ги извършва ръчно.
За разлика от инструменти като formatter или linter, Rector работи върху структурата на кода (Abstract Syntax Tree – AST) и разбира какво прави всяка конструкция. Това му позволява да извършва интелигентни и безопасни промени.
Инсталация
composer require rector/rector --dev
Конфигурация – Примерен rector.php:
use Rector\Config\RectorConfig;
return RectorConfig::configure()
->withPhpSets(php84: true);
Стартиране – за да видите какви промени предлага Rector, без да променя файловете, използвайте:
vendor/bin/rector process --dry-run
След като прегледате резултатите, можете да приложите промените:
vendor/bin/rector process
Нашият опит
Използвахме Rector при обновяването на един от най-големите ни вътрешни проекти – миграция от PHP 7.2 към PHP 8.3.
Проектът съдържа приблизително 200 000 PHP файла, като Rector автоматично извърши промени в около 4 000 файла. Повечето от тях бяха механични промени, които иначе биха изисквали значително количество ръчна работа.
След изпълнението на Rector се наложи да направим ръчни корекции в около 50 файла. Те не бяха свързани с грешки на инструмента, а с промени в поведението на PHP между различните версии – най-вече при сравнения между null и празен низ (“), където бизнес логиката трябваше да бъде прегледана и коригирана.
Целият процес по миграцията отне приблизително една седмица.
За сравнение, при аналогичен проект със сходен размер, който обновявахме без Rector, процесът отне почти месец. Основната разлика беше, че голяма част от механичните промени трябваше да бъдат извършени ръчно, което увеличи както времето за работа, така и риска от човешки грешки.
В нашия случай Rector съкрати значително времето за миграция и ни позволи да се фокусираме върху реалните несъвместимости и специфичната бизнес логика, вместо върху рутинни промени в кода.
Абонирайте се за СуперБлога, за да получавате полезно и експертно познание от света на уеб хостинг услугите, касаещо Вашия сайт и дигитално присъствие.
![Oнлайн магазин? Направете първата стъпка [Аудио] Онлайн магазин? Направете първата стъпка](https://blog.superhosting.bg/wp-content/uploads/2015/03/SH-First_Step_blog-150x150.png)
![13 елемента на продаващия онлайн магазин [Аудио] Елементите на продаващия сайт в СуперБлога](https://blog.superhosting.bg/wp-content/uploads/2020/05/SH-OnlineElements-1-150x150.png)
![Имам онлайн магазин, но нямам поръчки. Защо? [Аудио]](https://blog.superhosting.bg/wp-content/uploads/2017/08/SH-shopingbag-blog-150x150.png)