Rector PHP: पूर्ण गाइड, उदाहरण और उपयोग विधि
Rector एक शक्तिशाली टूल है जो PHP कोड को ऑटोमैटिक रूप से रिफैक्टर करता है। यह एक लाइब्रेरी है जो Abstract Syntax Tree (AST) का उपयोग करके आपके कोड का विश्लेषण करती है और उसमें निर्धारित ट्रांसफॉर्मेशन नियम लागू करती है। इससे कोड अपडेट करने के रूटीन कार्य जैसे PHP के नए वर्जन में माइग्रेट करना, नई भाषा सुविधाओं को लागू करना, पुराने कंस्ट्रक्ट को ठीक करना और कोड क्वालिटी में सुधार करना आसान हो जाता है।
Rector की आवश्यकता क्यों है? आधुनिक PHP डेवलपमेंट में प्रोजेक्ट तेज़ी से बढ़ते हैं और उन्हें अपडेट रखना मुश्किल हो जाता है। हज़ारों लाइनों के कोड को मैन्युअल रिफैक्टर करना समय लेने वाला और त्रुटि-प्रवण कार्य है। Rector इस समस्या को हल करता है और सेकंडों में जटिल ट्रांसफॉर्मेशन करता है। यह PHP 7.x से 8.x में अपग्रेड करने, पुराने फ्रेमवर्क (जैसे Zend Framework 1 से Laminas) से माइग्रेट करने, या स्ट्रिक्ट टाइप्स और आधुनिक पैटर्न लागू करने में विशेष रूप से उपयोगी है।
Rector "नियमों के सेट" के सिद्धांत पर काम करता है। आप तय करते हैं कि कौन से ट्रांसफॉर्मेशन करने हैं (जैसे "सभी array_* कॉल को str_* फंक्शन से बदलें"), और Rector कोड में सभी उपयुक्त स्थानों को ढूंढकर बदलाव करता है। यह टूल पूरी तरह से कस्टमाइज़ेबल है: आप कम्युनिटी के तैयार नियम सेट का उपयोग कर सकते हैं या अपने खुद के नियम बना सकते हैं। Rector CI/CD पाइपलाइन में एकीकृत होता है, जिससे हर कमिट पर कोड ऑटोमैटिक रूप से जांचा और ठीक किया जा सकता है।
इंस्टॉलेशन
Rector को Composer के माध्यम से इंस्टॉल किया जाता है, जो PHP का मानक पैकेज मैनेजर है। अपने प्रोजेक्ट की रूट डायरेक्टरी में निम्न कमांड चलाएं:
composer require rector/rector --dev
--dev फ्लैग का मतलब है कि पैकेज केवल डेवलपमेंट के लिए इंस्टॉल होगा, जो सही प्रैक्टिस है क्योंकि production में 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 को anonymous 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 + $b;
};
echo $oldFunction(1, 2); // आउटपुट: 3