Rector PHP: دليل شامل مع أمثلة عملية

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

Rector PHP: دليل شامل مع أمثلة عملية

Rector هي أداة قوية لإعادة هيكلة كود PHP بشكل تلقائي. إنها مكتبة تقوم بتحليل الكود الخاص بك باستخدام شجرة التركيب المجردة (AST) وتطبق قواعد تحويل محددة عليه. يتيح لك ذلك أتمتة المهام الروتينية لتحديث الكود، مثل الانتقال إلى إصدارات PHP الجديدة، وتطبيق ميزات اللغة الحديثة، وإصلاح البنى القديمة، وتحسين جودة الكود بشكل عام.

لماذا تحتاج إلى Rector؟ في تطوير PHP الحديث، تنمو المشاريع بسرعة ويصبح الحفاظ على تحديثها أكثر صعوبة. إعادة الهيكلة اليدوية لآلاف الأسطر من الكود هي عملية شاقة وعرضة للأخطاء. Rector يحل هذه المشكلة من خلال تمكين تحويلات معقدة في ثوانٍ. إنه مفيد بشكل خاص عند الترقية من PHP 7.x إلى 8.x، أو عند الانتقال من أطر العمل القديمة (مثل Zend Framework 1 إلى Laminas)، أو عند تطبيق الأنماط الحديثة والأنواع الصارمة.

يعمل Rector وفق مبدأ "مجموعة القواعد". أنت تحدد التحويلات التي تريد تنفيذها (مثل "استبدال جميع استدعاءات array_* بدوال str_*")، ويقوم Rector بالعثور على جميع الأماكن المناسبة في الكود وإجراء التغييرات. الأداة قابلة للتخصيص بالكامل: يمكنك استخدام مجموعات القواعد الجاهزة من المجتمع أو إنشاء قواعدك الخاصة. يتكامل Rector مع خطوط أنابيب CI/CD، مما يسمح بفحص وإصلاح الكود تلقائيًا مع كل commit.

التثبيت

يتم تثبيت Rector عبر Composer، مدير الحزم القياسي لـ PHP. قم بتنفيذ الأمر التالي في جذر مشروعك:

composer require rector/rector --dev

العلامة --dev تعني أنه سيتم تثبيت الحزمة للتطوير فقط، وهي ممارسة صحيحة لأن Rector غير مطلوب في بيئة الإنتاج.

بعد التثبيت، تحقق من أن كل شيء يعمل بشكل صحيح:

vendor/bin/rector --version

إذا كنت تستخدم تثبيتًا عامًا (غير موصى به للمشاريع)، يمكنك تنفيذ:

composer global require rector/rector

يتطلب Rector إصدار PHP 7.2 أو أعلى. يُوصى باستخدام PHP 8.0+ للحصول على أقصى أداء ودعم لجميع الميزات.

بداية سريعة: مثال عملي بسيط

لنقم بإنشاء ملف PHP بسيط يحتاج إلى إعادة هيكلة. لنفترض أن لدينا كودًا قديمًا يستخدم create_function()، والذي تمت إزالته في PHP 8.0.

الخطوة 1. قم بإنشاء ملف example.php:

<?php

$oldFunction = create_function('$a, $b', 'return $a + $b;');
echo $oldFunction(1, 2); // سيطبع 3

الخطوة 2. قم بإنشاء ملف الإعدادات rector.php في جذر المشروع:

<?php

declare(strict_types=1);

use Rector\Config\RectorConfig;
use Rector\Php80\Rector\Function_\CreateFunctionToAnonymousFunctionRector;

return static function (RectorConfig $rectorConfig): void {
    // تحديد المسارات التي سيتم تحليلها
    $rectorConfig->paths([
        __DIR__ . '/example.php',
    ]);

    // تسجيل قاعدة استبدال create_function بدوال مجهولة
    $rectorConfig->rule(CreateFunctionToAnonymousFunctionRector::class);
};

الخطوة 3. قم بتشغيل Rector:

vendor/bin/rector process --dry-run

العلامة --dry-run ستظهر التغييرات التي سيتم إجراؤها دون تطبيقها. لتطبيق التغييرات فعليًا على الملفات، قم بتنفيذ:

vendor/bin/rector process

النتيجة: سيتم تحويل ملف example.php إلى:

<?php

$oldFunction = function ($a, $b) {
    return $a +

توصيات