- GitHub - rectorphp/rector: Instant Upgrades and Automated Refactoring of any PHP 5.3+ code
- Instant Upgrades and Automated Refactoring of any PHP 5.3+ code - rectorphp/rector
यह AI द्वारा अनुवादित पोस्ट है।
durumis AI द्वारा सारांशित पोस्ट
- PHP संस्करण अपग्रेड टूल रेक्टर का उपयोग करके PHP 5.3 कोड को PHP 7.4 में माइग्रेट करने के तरीके का परिचय देता है।
- कम्पोजर स्थापित करने के बाद, रेक्टर को प्रोजेक्ट में स्थापित करें और rector.php कॉन्फ़िगरेशन फ़ाइल के माध्यम से अपग्रेड के लिए लक्षित कोड और PHP संस्करण निर्दिष्ट करें।
- सुधार नियमों को सेट और निष्पादित करके, कोड को स्वचालित रूप से संशोधित करें, और परिवर्तनों को Git के माध्यम से प्रबंधित करें ताकि अपग्रेड को सुरक्षित रूप से पूरा किया जा सके।
जब मैंने GNU Board 5 (ग्रूनू बोर्ड 5) नामक कोरियाई PHP CMS वेबसाइट देखी, तो मैंने देखा कि PHP संस्करण अपग्रेड करने के बाद, कुछ लोगों को समर्थित नहीं किए गए सिंटैक्स और संस्करणों के कारण परेशानियों का सामना करना पड़ रहा था।
इसलिए, मैंने खोजबीन की और...
Reddit पर, मैंने पाया कि Rector (रेक्टर) नामक एक टूल माइग्रेशन में मदद करता है, इसलिए मैं आपको इसका उपयोग करने का तरीका बता रहा हूँ।
2015 में PHP 7.0 के लॉन्च के बाद से, PHP माइग्रेशन टूल जैसे PHP CS Fixer और Rector (रेक्टर) इत्यादि आए हैं।
Rector (रेक्टर) का उपयोग करना थोड़ा आसान लगता है।
Rector (रेक्टर) (उच्चारण: रेक्टर) PHP 5.3 से लेकर 8.2 तक के कोड को वांछित संस्करण के अनुसार सिंटैक्स चेक करता है और उसे ठीक करता है।
एक बात जो थोड़ी निराशाजनक है, वह यह है कि Rector (रेक्टर) एक स्टेटिक एनालाइज़र है, इसलिए यह रनटाइम पर आने वाली त्रुटियों का पता नहीं लगा पाता है।
Rector (रेक्टर) को काम करने के लिए, आपके सिस्टम में Composer (कम्पोजर) नामक PHP पैकेज मैनेजमेंट टूल स्थापित होना चाहिए।
1. Composer (कम्पोजर) को स्थापित करें।
2. अपने वर्तमान प्रोजेक्ट फोल्डर में Rector (रेक्टर) को स्थापित करें।
3. कॉन्फ़िगरेशन फाइल rector.php बनाएँ।
rector.php कॉन्फ़िगरेशन
समझने में आसानी के लिए, हम एक स्थिति मान लेते हैं।
मान लीजिए कि हमारा सोर्स कोड PHP 5.3 में लिखा गया है, और हम उसे PHP 7.4 में अपग्रेड करना चाहते हैं।
Rector (रेक्टर) का संस्करण 1.0.3 है।
RectorConfig::config() फंक्शन सोर्स कोड के फोल्डर और PHP संस्करण को सेट करता है।
withPhpSets फंक्शन उस PHP संस्करण के लिए फंक्शन को सेट करता है जिसमे अपग्रेड करना है।
यदि आपका Rector (रेक्टर) चलाने वाला PHP संस्करण PHP 8.0 है, तो
इस तरह से आप PHP संस्करण : true सेट कर सकते हैं।
लेकिन अगर PHP का वर्तमान संस्करण PHP 7.4 या उससे कम है,
तो फंक्शन में नाम वाले पैरामीटर सिंटैक्स का इस्तेमाल नहीं कर सकते हैं, इसलिए आपको वांछित संस्करण के लिए true सेट करना होगा।
Rector (रेक्टर) PHP 8.3 को सपोर्ट करता है, इसलिए अगर आपको PHP 7.4 सेट करना है, तो आप इस तरह से कर सकते हैं।
->withPaths([
__DIR__ , // rector.php वाली डायरेक्टरी।
])
जिन नियमों और फोल्डर को आप लागू नहीं करना चाहते हैं, उन्हें आप यहां निर्दिष्ट कर सकते हैं।
फोल्डर के लिए '/फोल्डर का नाम/*' का प्रयोग करें।
फाइल के लिए 'फाइल का नाम' का प्रयोग करें।
हमने 'SensitiveConstantNameRector' नियम को जोड़ा है।
Rector (रेक्टर) PHP एरे में undefined index होने पर उसे ढूंढ नहीं पाता है और उसे कांस्टेंट मानकर गलत तरीके से बदलने की कोशिश करता है। इसलिए, हमने इसे एक्सक्लूड नियमों में शामिल कर लिया है।
ये नियम कोड स्टाइल से संबंधित हैं, इसलिए हम इन्हें एक्सक्लूड कर रहे हैं।
रन करना
इसके दो तरीके हैं।
यह कमांड केवल कंसोल पर उन कोड को प्रिंट करेगा जिन्हें बदलने की ज़रूरत है।
सोर्स कोड जितना बड़ा होगा, उतनी ही ज़्यादा रैम की ज़रूरत होगी। इसलिए, आपको --memory-limit=2G फ़्लैग का इस्तेमाल करके रैम की मात्रा निर्धारित करनी होगी।
यह कमांड सोर्स कोड को सीधे बदल देगा।
इसमें बहुत सारे फ़्लैग हैं, इसलिए गलती से कुछ अनचाहे फ़्लैग लग भी सकते हैं। इसलिए, Git (गिट) के ज़रिए बदलावों की जांच करनी ज़रूरी है।