تصوير ماتيو ديل بيانو على Unsplash
في عالم تطوير PHP دائم التطور، يعد الحفاظ على قاعدة التعليمات البرمجية الخاصة بك نظيفة وحديثة وفعالة أمرًا بالغ الأهمية. هذا هو المكان الذي يأتي فيه دور Rector PHP. إذا كنت تتساءل عن كيفية استخدام Rector PHP، أو كيفية تثبيته، أو ما هو Rector PHP بالضبط، فهذا الدليل الشامل يناسبك. سنرشدك عبر الأساسيات، ونقدم لك برنامجًا تعليميًا مفصلاً عن PHP Rector، ونقدم لك رؤى حول PHP Rector وكيفية استخدامه بفعالية. بحلول نهاية هذه المقالة، سيكون لديك فهم قوي لـ Rector PHP وكيف يمكنها تحسين سير عمل التطوير لديك.
تم إطلاق Rector في عام 2020، ولكن تم إصداره 1.0 فقط في عام 2024. إنها أداة سطر أوامر تقوم بإجراء تحليل ثابت لقاعدة التعليمات البرمجية. من هذا التحليل يمكن تطبيق التغييرات. أعتقد أن أحد الأمثلة الجيدة على ذلك هو ما إذا كانت قاعدة التعليمات البرمجية الخاصة بك مليئة باستدعاءات array() عندما يعتبر هذا الآن ممارسة قديمة، وتم استبدالها الآن بصيغة المصفوفة القصيرة [].
يعد المرور عبر قاعدة التعليمات البرمجية لاستبدال هذا أمرًا مملاً. يمكننا استخدام أداة بحث واستبدال بسيطة، ولكن ماذا لو كان هناك array() مغلفة بسلسلة أو داخل تعليق لا ينبغي تغييره؟ يتعين علينا الآن التحقق من كل مثيل تم استبداله.
هذا النوع من المشاكل هو ما يتفوق فيه ريكتور. بدلاً من ذلك، يستطيع Rector إلقاء نظرة على الكود ومعرفة ما إذا كان عبارة عن مصفوفة سيتم استبدالها.
قد تتساءل، يمكن لـ PHP CS Fixer أيضًا القيام بذلك، وهذا صحيح. لكن لدى Rector أيضًا PHPStan الذي يعمل تحت الغطاء ليس فقط للتعرف على بناء الجملة ولكن أيضًا لتحليل الأنواع. هذا يعني أن Rector يمكنه اكتشاف متى يكون للفئة فئة أصل معينة، أو عندما يكون المتغير من نوع معين، أو ما هو نوع الإرجاع المتوقع للدالة. منحها نطاقًا أكبر بكثير لإجراء تغييرات على قاعدة التعليمات البرمجية.
قد يبدو هذا واضحًا لمطوري PHP ذوي الخبرة ولكن هناك طريقتان أساسيتان ويعتمد الأمر حقًا على الطريقة التي تريد بها استخدام Rector.
إذا كنت تريد استخدام Rector كجزء من التكامل المستمر فمن المنطقي تثبيت Rector بشكل مختلف في مشاريعك من خلال الملحن.
composer require --dev rector/rector
ولكن إذا كنت ترغب في تجربة Rector على مشروع واحد أو عدة مشاريع لإجراء الترقيات، فقد يكون من الأفضل لك تثبيت Rector عالميًا باستخدام
composer global require rector/rector
أيًا كانت الخطوة التي تختارها، ستكون الخطوة التالية هي إنشاء تكوين في الدليل الجذر لمشروع ما وتضمين جميع المجلدات التي تحتوي على كود PHP الذي ترغب في ترقيته. لا يتضمن ذلك مجلد البائع بالطبع لأننا لا نريد تعديله.
هذا هو الشكل الذي قد يبدو عليه التكوين لمشروع Laravel:
use Rector\Config\RectorConfig; use Rector\Php71\Rector\List_\ListToArrayDestructRector; return RectorConfig::configure() ->withPaths([__DIR__. '/config', __DIR__. '/src', __DIR__. '/tests', __DIR__. '/routes']) ->withImportNames(removeUnusedImports: true);
كما هو الحال في القسم الأخير، يمكن تحديد استخدام Rector حسب الطريقة التي تريد استخدامها بها. يطبق رئيس الجامعة التغييرات من خلال تحديدات القواعد. هذا هو نفس PHP CS Fixer. ستعمل هذه القواعد على اكتشاف المشكلة ثم محاولة إصلاح المشكلة التي صممت لحلها.
إذا أردنا استخدام Rector بطريقة تكامل مستمر، لأننا نريد أن نجعل استخدام كل التعليمات البرمجية محسّنًا قدر الإمكان أثناء تطويرنا لها، فقد نستخدم فقط مجموعة معينة من القواعد.
لدى Rector مجموعات من القواعد، غالبًا ما توصف بأنها "الرمز الميت" أو "جودة الكود"، والتي تزيل التعليمات البرمجية أو تحسّنها وتحسنها على التوالي. من المفيد جدًا الالتزام بهذه المجموعات فقط حيث يمكننا أن نكون واثقين من أنها تعمل في معظم الأوقات. ولكن يجب أن تدرك تمامًا أن الطريقة التي يكتب بها Rector التعليمات البرمجية ليست مثالية أبدًا. في كثير من الأحيان، عندما تتم كتابة القواعد، فإنها قد تغطي السيناريوهات النموذجية وقد تفوت بعض الظروف التي وجدت أنها قاعدة التعليمات البرمجية الخاصة بك. قد يؤدي هذا إلى رمز معطل.
في حالة رغبتك في استخدام Rector، يجب أن يكون لديك اختبارات مكتوبة لتطبيقك. بدونها يمكن أن يؤدي Rector بسهولة إلى إدخال أخطاء لن تكتشفها إلا بعد حدوث مشكلة.
شيء آخر يجب مراعاته عند استخدام Rector هو أنه يجب عليك استخدام أداة فحص مثل PHP CS Fixer. لا ينظر Rector إلى المسافات البيضاء والمسافات والأسطر الجديدة بين استدعاءات الأساليب ووسائطها وما إلى ذلك. يجب أن يؤدي استخدام أداة الفحص إلى الحفاظ على تنسيق التعليمات البرمجية وفقًا للمعيار الذي تتوقعه بعد قيام Rector بتطبيق الإصلاحات.
الآن تم تثبيت Rector ونحن على استعداد لتجربته، فلنجرب تطبيق قاعدة واحدة. لنبدأ بتحديث ملف التكوين الذي أنشأناه سابقًا.
use Rector\Config\RectorConfig; use Rector\Php71\Rector\List_\ListToArrayDestructRector; return RectorConfig::configure() ->withPaths([__DIR__. '/config', __DIR__. '/src', __DIR__. '/tests', __DIR__. '/routes']) ->withImportNames(removeUnusedImports: true) ->withRules([ ListToArrayDestructRector::class, ]);
في حالة هذا التكوين، سنقوم باستبدال استخدام القوائم، بحيث نستخدم إعادة هيكلة المصفوفة بدلاً من ذلك. التغييرات التي نتوقع إجراؤها هي كما يلي:
-list($a, $b) = ['a', 'b']; [$a, $b] = ['a', 'b'];
الآن يمكننا اختبار هذا التكوين عن طريق إجراء تشغيل جاف لـ Rector.
rector --dry-run
إذا كان كل شيء ناجحًا، فيجب أن نرى الآن مخرجات تحتوي على اختلاف في جميع التغييرات التي تم إجراؤها على كل ملف، مع قائمة بالقواعد التي أجرت التغييرات. يسرد التكوين الخاص بنا قاعدة واحدة فقط، لذلك يتم تطبيق قاعدة واحدة فقط ولكن إذا تمت إضافة المزيد من القواعد، فسنرى قائمة بقاعدة واحدة أو أكثر هنا.
يعد هذا وقتًا رائعًا لمراجعة التغييرات والتأكد من أن القاعدة تعمل كما هو متوقع. بمجرد أن نكون سعداء يمكننا تشغيل ريكتور مرة أخرى. بدون إشارة التشغيل الجاف، ستتم كتابة التغييرات على الملفات.
rector
بعد الانتهاء يجب علينا تشغيل أداة الفحص المفضلة لدينا ثم إجراء اختباراتنا. هذا كل شيء. لقد استخدمنا الآن رئيس الجامعة.
Rector PHP هي أداة قوية يمكنها تحسين سير عمل تطوير PHP بشكل كبير عن طريق أتمتة إعادة بناء التعليمات البرمجية وضمان بقاء قاعدة التعليمات البرمجية الخاصة بك نظيفة وحديثة. من خلال فهم ماهية Rector PHP، وتعلم كيفية تثبيتها، وإتقان كيفية استخدامها بفعالية، يمكنك الاستفادة من إمكاناتها لتبسيط تحديثات التعليمات البرمجية، وتحسين جودة التعليمات البرمجية، وتقليل مخاطر أن تبدو التعليمات البرمجية وكأنها مشروع "قديم". سواء كنت تقوم بدمج Rector في مسار التكامل المستمر الخاص بك أو استخدامه لترقيات قاعدة التعليمات البرمجية واسعة النطاق، فإن Rector هو أحد الأصول التي لا غنى عنها لأي مطور PHP يتطلع إلى الحفاظ على مستوى عالٍ من التميز في التعليمات البرمجية.
إذا كنت تريد أن تعرف المزيد عن Rector، أقترح الانتقال إلى https://getrector.com/.
أنا بيتر فوكس، مطور برامج في المملكة المتحدة وأعمل مع Laravel. شكرًا لك على قراءة مقالتي، لدي الكثير لقراءته على https://articles.peterfox.me. أنا أيضًا الآن راعي على GitHub. إذا كنت ترغب في تشجيعي على كتابة المزيد من المقالات مثل هذه، فيرجى التفكير في إسقاط تبرع صغير لمرة واحدة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3