Да обновим версията на PHP с Rector

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


Абонирайте се за СуперБлога, за да получавате полезно и експертно познание от света на уеб хостинг услугите, касаещо Вашия сайт и дигитално присъствие.

Христомир Христов
Христомир Христов
Senior Developer и Software Development Manager с повече от 15 години опит в изграждането на софтуерни системи и ръководенето на инженерни екипи. Специализира в създаването на мащабируеми решения, подобряване на процеси и изграждане на култура на отговорност, доверие и непрекъснато усъвършенстване. В ролята си на технически и people лидер той фокусира работата си върху ясната комуникация, ефективната колаборация между екипи и подкрепата на разработчиците да вземат по-добри решения.
5 1 vote
.
Абониране
Уведоми ме при
guest

0 Коментара
Inline Feedbacks
View all comments
Онлайн магазин? Направете първата стъпка

Oнлайн магазин? Направете първата стъпка [Аудио]

5
Искате да имате онлайн магазин? Ако отговорът е положителен, вижте първите стъпки, през които да преминете, за да изградите успешен онлайн бизнес.
Елементите на продаващия сайт в СуперБлога

13 елемента на продаващия онлайн магазин [Аудио]

0
Тази статия е за всички собственици на онлайн магазини, които искат да подобрят онлайн присъствието си и да вдъхнат повече доверие на своите потребители.

Имам онлайн магазин, но нямам поръчки. Защо? [Аудио]

0
Изграждането на работещ онлайн магазин изисква време, постоянство и много работа! Ако вече имате магазин, но нямате продажби, вижте възможните причини.