अनस्प्लैश पर मैटियो डेल पियानो द्वारा फोटो
PHP विकास की निरंतर विकसित हो रही दुनिया में, अपने कोडबेस को साफ, अद्यतन और कुशल रखना महत्वपूर्ण है। यहीं पर रेक्टर PHP काम में आती है। यदि आप सोच रहे हैं कि रेक्टर PHP का उपयोग कैसे करें, इसे कैसे स्थापित करें, या वास्तव में रेक्टर PHP क्या है, तो यह व्यापक मार्गदर्शिका आपके लिए है। हम आपको मूल बातें बताएंगे, एक विस्तृत रेक्टर PHP ट्यूटोरियल प्रदान करेंगे, और PHP रेक्टर पर अंतर्दृष्टि प्रदान करेंगे और इसे प्रभावी ढंग से कैसे उपयोग करें। इस लेख के अंत तक, आपको रेक्टर PHP की ठोस समझ हो जाएगी और यह आपके विकास कार्यप्रवाह को कैसे बढ़ा सकता है।
रेक्टर को 2020 में शुरू किया गया था, लेकिन 2024 में इसे केवल 1.0 रिलीज मिला। यह एक कमांड लाइन टूल है जो कोड बेस का स्थिर विश्लेषण करता है। उस विश्लेषण से परिवर्तन लागू किये जा सकते हैं। मुझे लगता है कि इसका एक अच्छा उदाहरण यह होगा कि यदि आपका कोड आधार array() कॉल से भरा हुआ था, जबकि इसे अब एक पुरानी प्रथा माना जाता है, जिसे अब [] लघु सरणी सिंटैक्स द्वारा प्रतिस्थापित किया गया है।
इसे बदलने के लिए कोड बेस से गुजरना कठिन है। हम एक सरल ढूँढने और बदलने वाले टूल का उपयोग कर सकते हैं, लेकिन क्या होगा यदि कोई array() एक स्ट्रिंग या किसी टिप्पणी के अंदर इनकैप्सुलेटेड हो जिसे बदला नहीं जाना चाहिए? अब हमें प्रतिस्थापित किए गए प्रत्येक उदाहरण की जांच करनी होगी।
इस प्रकार की समस्या में रेक्टर उत्कृष्टता प्राप्त करता है। इसके बजाय रेक्टर कोड को देखने और निश्चित रूप से जानने में सक्षम है कि क्या यह प्रतिस्थापित किया जाने वाला ऐरे है।
आप शायद पूछ रहे होंगे, PHP CS फिक्सर भी ऐसा कर सकता है, जो सच है। लेकिन रेक्टर के पास PHPStan भी है जो न केवल सिंटैक्स को पहचानने के लिए बल्कि प्रकारों का विश्लेषण करने के लिए भी काम करता है। इसका मतलब यह है कि रेक्टर यह पता लगा सकता है कि किसी क्लास में एक विशेष पैरेंट क्लास कब है, कब एक वेरिएबल एक विशेष प्रकार है या किसी फ़ंक्शन का अपेक्षित रिटर्न प्रकार क्या है। इसे कोडबेस में बड़े पैमाने पर परिवर्तन करने के लिए कहीं अधिक बड़ा दायरा देना।
यह अनुभवी PHP डेवलपर्स के लिए स्पष्ट लग सकता है लेकिन इसके दो प्राथमिक तरीके हैं और यह वास्तव में निर्भर करता है कि आप रेक्टर का उपयोग कैसे करना चाहते हैं।
यदि आप निरंतर एकीकरण के हिस्से के रूप में रेक्टर का उपयोग करना चाहते हैं तो कंपोजर के माध्यम से अपनी परियोजनाओं में रेक्टर को अलग-अलग स्थापित करना समझ में आता है।
composer require --dev rector/rector
लेकिन यदि आप अपग्रेड करने के लिए एक या एकाधिक परियोजनाओं पर रेक्टर के साथ प्रयोग करना चाहते थे, तो आपके लिए
का उपयोग करके विश्व स्तर पर रेक्टर स्थापित करना बेहतर हो सकता है।
composer global require rector/rector
आपने जो भी कदम चुना है, अगला कदम किसी प्रोजेक्ट के लिए रूट डायरेक्टरी में एक कॉन्फ़िगरेशन बनाना होगा और PHP कोड वाले सभी फ़ोल्डरों को शामिल करना होगा जिन्हें आप अपग्रेड करना चाहते हैं। बेशक इसमें विक्रेता फ़ोल्डर शामिल नहीं है क्योंकि हम उसे संशोधित नहीं करना चाहते हैं।
लारवेल प्रोजेक्ट के लिए कॉन्फिगरेशन इस तरह दिख सकता है:
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);
पिछले अनुभाग की तरह, रेक्टर का उपयोग इस आधार पर निर्धारित किया जा सकता है कि आप इसका उपयोग कैसे करना चाहते हैं। रेक्टर नियमों के चयन के माध्यम से परिवर्तन लागू करता है। यह PHP CS फिक्सर के समान है। ये नियम समस्या का पता लगाएंगे और फिर उस समस्या को ठीक करने का प्रयास करेंगे जिसके लिए वे डिज़ाइन किए गए हैं।
यदि हम निरंतर एकीकरण तरीके से रेक्टर का उपयोग करना चाहते हैं, क्योंकि हम सभी कोड का उपयोग यथासंभव सर्वोत्तम रूप से अनुकूलित करना चाहते हैं, हम इसे केवल नियमों के एक विशेष सेट का उपयोग कर सकते हैं।
रेक्टर के पास नियमों के सेट होते हैं, जिन्हें अक्सर डेड कोड या कोड क्वालिटी के रूप में वर्णित किया जाता है, जो क्रमशः कोड को हटाता है या बढ़ाता है और अनुकूलित करता है। केवल इन सेटों पर टिके रहना काफी फायदेमंद है क्योंकि हम आश्वस्त हो सकते हैं कि वे ज्यादातर समय काम करते हैं। लेकिन आपको इस बात की पूरी जानकारी होनी चाहिए कि रेक्टर का कोड लिखने का तरीका कभी भी सही नहीं होता है। अक्सर जब नियम लिखे जाते हैं तो वे विशिष्ट परिदृश्यों को कवर कर सकते हैं और कुछ परिस्थितियों में यह आपके कोड आधार से चूक सकते हैं। इससे कोड टूट सकता है।
यदि आप रेक्टर का उपयोग करना चाहते हैं, तो आपके पास निश्चित रूप से आपके आवेदन के लिए लिखित परीक्षण होने चाहिए। उनके बिना रेक्टर आसानी से ऐसे बग उत्पन्न कर सकता है जिन्हें आप तब तक नहीं खोज पाएंगे जब तक कि यह एक समस्या न हो।
रेक्टर का उपयोग करते समय विचार करने वाली एक और बात यह है कि आपको PHP सीएस फिक्सर जैसे लिंटिंग टूल का उपयोग करना चाहिए। रेक्टर व्हाइटस्पेस, मेथड कॉल और उसके तर्कों आदि के बीच रिक्त स्थान और नई लाइनों को नहीं देखता है। रेक्टर द्वारा इसके सुधारों को लागू करने के बाद लिंटिंग टूल का उपयोग करके कोड फ़ॉर्मेटिंग को आपके अपेक्षित मानक पर रखना चाहिए।
अब हमने रेक्टर स्थापित कर लिया है और हम इसे आज़माने के लिए तैयार हैं, आइए एक नियम लागू करने का प्रयास करें। आइए अपनी पहले बनाई गई कॉन्फ़िग फ़ाइल को अपडेट करके शुरुआत करें।
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 --dry-run
यदि सबकुछ सफल रहा है तो अब हमें एक आउटपुट देखना चाहिए जिसमें प्रत्येक फ़ाइल में सभी परिवर्तनों का एक अंतर शामिल है, जिसमें उन नियमों की एक सूची भी शामिल है जिन्होंने परिवर्तन किए हैं। हमारा कॉन्फिगरेशन केवल एक नियम को सूचीबद्ध करता है इसलिए केवल एक ही नियम लागू होता है लेकिन यदि अधिक नियम जोड़े जाते हैं तो हम यहां एक या अधिक की सूची देखेंगे।
यह परिवर्तनों की समीक्षा करने और यह सुनिश्चित करने का एक अच्छा समय है कि नियम उम्मीद के मुताबिक प्रदर्शन कर रहा है। एक बार जब हम खुश हो जाएंगे तो हम रेक्टर को फिर से चला सकते हैं। ड्राई रन फ़्लैग के बिना, फ़ाइलों में परिवर्तन लिखे जाएंगे।
rector
इसके पूरा होने के बाद हमें अपना पसंदीदा लिंटिंग टूल चलाना चाहिए और फिर अपने परीक्षण चलाने चाहिए। इतना ही। हमने अब रेक्टर का उपयोग किया है।
रेक्टर PHP एक शक्तिशाली उपकरण है जो कोड रीफैक्टरिंग को स्वचालित करके और यह सुनिश्चित करके आपके PHP विकास वर्कफ़्लो को महत्वपूर्ण रूप से बढ़ा सकता है कि आपका कोडबेस साफ़ और आधुनिक बना रहे। रेक्टर PHP क्या है, इसे समझकर, इसे इंस्टॉल करना सीखकर और इसे प्रभावी ढंग से उपयोग करने में महारत हासिल करके, आप कोड अपडेट को सुव्यवस्थित करने, कोड की गुणवत्ता में सुधार करने और "विरासत" प्रोजेक्ट की तरह कोड महसूस होने के जोखिम को कम करने के लिए इसकी क्षमताओं का लाभ उठा सकते हैं। चाहे आप रेक्टर को अपनी निरंतर एकीकरण पाइपलाइन में एकीकृत कर रहे हों या बड़े पैमाने पर कोडबेस अपग्रेड के लिए इसका उपयोग कर रहे हों, रेक्टर किसी भी PHP डेवलपर के लिए एक अनिवार्य संपत्ति है जो कोड उत्कृष्टता के उच्च मानक को बनाए रखना चाहता है।
यदि आप रेक्टर के बारे में और जानकारी लेना चाहते हैं तो मेरा सुझाव है कि https://getrector.com/ पर जाएं।
मैं पीटर फॉक्स हूं, यूके में एक सॉफ्टवेयर डेवलपर जो लारवेल के साथ काम करता है। मेरा लेख पढ़ने के लिए धन्यवाद, मेरे पास https://articles.peterfox.me पर पढ़ने के लिए और भी बहुत कुछ है। मैं अब GitHub पर भी प्रायोजक हूं। यदि आप मुझे इस तरह के और लेख लिखने के लिए प्रोत्साहित करना चाहते हैं तो कृपया एक छोटा सा दान देने पर विचार करें।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3