با Rector پروژه خود را به PHP 8.2 ارتقا دهید

من می خواستم یک پروژه را به PHP 8.2 ارتقا دهم و فهمیدم که می توانم از Rector برای این کار استفاده کنم.
نه تنها اینطور بود، بلکه من کاملاً دست کم گرفتم که چقدر آسان می شد.
رکتور چیست؟
Rector یک ابزار رایگان و منبع باز است که با زبان PHP نوشته شده است که به شما امکان می دهد وظایف مختلف بازسازی را خودکار کنید. کد شما را تجزیه و تحلیل می کند و قوانینی را که در پیکربندی آن مشخص کرده اید اعمال می کند. همچنین این امکان وجود دارد که قوانین خود را ایجاد کنید.
چگونه پروژه خود را به PHP 8.2 ارتقا دهیم
ابتدا Rector را به عنوان وابستگی توسعه نصب کنید:
$ composer require --dev rector/rector
سپس، تولید کنید rector.php
فایل پیکربندی در ریشه پروژه شما:
$ ./vendor/bin/rector init
آن فایل را باز کنید و محتوای آن را با موارد زیر جایگزین کنید:
<?php
declare(strict_types=1);
use Rector\Config\RectorConfig;
use Rector\Set\ValueObject\LevelSetList;
return static function (RectorConfig $rectorConfig): void {
$rectorConfig->sets([LevelSetList::UP_TO_PHP_82]);
};
برای بررسی تغییراتی که Rector قرار است ایجاد کند، یک اجرا خشک انجام دهید (در زیر آن را تجزیه و تحلیل می کند app
پوشه به عنوان مثال):
$ ./vendor/bin/rector process app --dry-run
اگر از آنها راضی هستید، تغییرات را اعمال کنید:
$ ./vendor/bin/rector process app
همچنین میتوانید مسیرهایی را برای تجزیه و تحلیل در فایل پیکربندی مستقیماً مشخص کنید:
<?php
declare(strict_types=1);
use Rector\Config\RectorConfig;
use Rector\Set\ValueObject\LevelSetList;
return static function (RectorConfig $rectorConfig): void {
$rectorConfig->paths([
__DIR__ . '/app',
// ...
]);
$rectorConfig->sets([LevelSetList::UP_TO_PHP_82]);
};
و سپس به سادگی اجرا کنید:
$ ./vendor/bin/rector process
زیر کاپوت چه خبر است؟
در بالا، UP_TO_PHP_82
ثابت به این معنی است که نه تنها قوانین ارتقاء از PHP 8.1 به PHP 8.2 اعمال شده است، بلکه قوانین از PHP 8.0 به PHP 8.1 و همچنین تمامی نسخه های دیگر تا PHP 5.2 اعمال شده اند.
به عبارت دیگر، می توانید با استفاده از مجموعه قوانین از پیش تعریف شده ارائه شده توسط Rector، کل پایه کد را از PHP 5.2 به آخرین نسخه با یک دستور بیاورید.
اما موارد بیشتری وجود دارد – میتوانید قوانین موجود و توضیحات آنها را در اینجا بررسی کنید، که بسیار فراتر از تغییرات مربوط به نسخه است. و همانطور که قبلا ذکر شد، در صورت نیاز می توانید قوانین خود را نیز ایجاد کنید.
بستن افکار
Rector مدتی در رادار من بوده است و من حتی قبلاً چند بار از آن استفاده کردم، با این حال هنوز از قدرت آن شگفت زده هستم.
در حالی که به نظر می رسد اخیراً کشش کمی بیشتر شده است، همراه با سایر ابزارهای تجزیه و تحلیل استاتیک مانند PHPStan، هنوز بسیار مورد استفاده قرار نمی گیرد. یکی از دلایل احتمالاً عدم آگاهی توسعه دهندگان از پتانسیل آن است که موارد فوق فقط یک ذوق است.
کتابی وجود دارد که به طور عمیق Rector را پوشش می دهد که به زودی قصد مطالعه آن را دارم.