durumis AI द्वारा संक्षेपित पाठ
- PHP संस्करण अपग्रेड के बाद, समर्थित नहीं किए गए व्याकरण और संस्करण समस्याओं को हल करने के लिए माइग्रेशन उपकरण रेक्टर का परिचय दिया गया था।
- रेक्टर PHP 5.3~8.2 कोड को इच्छित संस्करण के अनुरूप व्याकरण की जांच और संशोधन करता है।
- रेक्टर का उपयोग करने के लिए, कम्पोज़र स्थापना, rector.php कॉन्फ़िगरेशन फ़ाइल लिखना, लागू करना न चाहते हैं जो नियम और निर्देशिकाएं हैं, और इसे चलाना आवश्यक है।
कोरियाई PHP CMS ग्नूबोर्ड5 की साईट का इस्तेमाल करते हुए PHP वर्शन अपडेट करने के बाद कई लेखकों ने समर्थन वापिस लेने के बारे में कई बातें कीं। इसीलिए मेरी तलाश शुरू हुई और..
रेडिट में जाने पर मुझे rector नाम का एक उपकरण मिला जो माइग्रेशन करने में मदद करता है। तो मैं इसके उपयोग का तरीका बताता हूँ।
PHP 7.0 के 2015 में आने के बाद से PHP माइग्रेशन टूल आया - PHP cs - fixer, rector इत्यादि
rector उपयोग में आसान होता है।
rector (उच्चारण: रेक्टर) PHP 5.3 ~ 8.2 के कोड को किसी भी वर्शन के अनुसार सिंटैक्स जाँचना और उसे ठीक करता है।
एक चीज़ जो मैं चाहता हूँ कि rector एक static analyzer है, इसलिए रनटाइम में होने वाली गड़बड़ियों का पता वह नहीं लगा पाता है।
Rector को PHP पैकेज मैनेजमेंट टूल कम्पोज़र में इंस्टाल होना चाहिए।
1. कम्पोज़र को इंस्टाल करें।
2. उस समय के प्रोजेक्ट फ़ोल्डर में rector को इंस्टाल करें।
```php composer require rector/rector --dev
3. सेटिंग की फ़ाइल rector.php बनाएँ।
rector.php सेटिंग
समझने के लिए परिस्थिति जानें।
स्रोत कोड PHP5.3 का है जबकि अपडेट का लक्ष्य PHP 7.4 है।
Rector का वर्शन 1.0.3 है।
```php <?php
use Rector\Config\RectorConfig; use Rector\Php54\Rector\Array_\LongArrayToShortArrayRector; use Rector\Php74\Rector\LNumber\AddLiteralSeparatorToNumberRector;
return RectorConfig::configure() ->withPhpSets(php74: true) ->withParallel(1200, 8, 8) ->withPaths([ DIR . '/src', // स्रोत कोड का पथ ]) ->withSkip([ Rector\Php73\Rector\ConstFetch\SensitiveConstantNameRector::class, Rector\Php74\Rector\LNumber\AddLiteralSeparatorToNumberRector::class, Rector\CodeQuality\Rector\If\SimplifyIfElseToTernaryRector::class, Rector\Php53\Rector\Ternary\TernaryToElvisRector::class, Rector\Php80\Rector\Class\ClassPropertyAssignToConstructorPromotionRector::class, Rector\Php80\Rector\FunctionLike\MixedTypeRector::class, Rector\CodeQuality\Rector\If\SimplifyIfNullableReturnRector::class, Rector\Php80\Rector\Switch\ChangeSwitchToMatchRector::class, Rector\Php74\Rector\Closure\ClosureToArrowFunctionRector::class, Rector\Php71\Rector\ClassConst\PublicConstantVisibilityRector::class, ]);
RectorConfig::config() स्रोत कोड फ़ोल्डर, PHP वर्शन सेटिंग करता है।
withPhpSets फंक्शन PHP फंक्शन को अपडेट करता है।
यदि PHP का वर्शन 8.0 है जो rector को रन करता है
```php ->withPhpSets(php74: true)
इस तरह आप PHP वर्शन : true कर सकते हैं।
पर अगर PHP वर्शन 7.4 से कम हो
जब फंक्शन का नाम वाले पैरामीटर का सिंटैक्स न इस्तेमाल हो सके, तब आपको तभी true सेट करना चाहिए जब आप चाहते वर्शन आ जाए।
rector PHP 8.3 को सपोर्ट करता है। तो PHP 74 को स्पेसिफाई करने पर यह ऐसा होगा।
```php ->withPhpSets( false, // php 8.3 false, // php 8.2 false, // php 8.1 false, // php 8.0 false, // php 8.1 true // php 7.4 )
->withPaths([
__
DIR__
, // rector.php जिस डायरेक्टरी में है वह डायरेक्टरी।
])
```php
->withSkip([
Rector\Php73\Rector\ConstFetch\SensitiveConstantNameRector::class,
Rector\Php74\Rector\LNumber\AddLiteralSeparatorToNumberRector::class,
Rector\CodeQuality\Rector\If\SimplifyIfElseToTernaryRector::class,
Rector\Php53\Rector\Ternary\TernaryToElvisRector::class,
Rector\Php80\Rector\Class\ClassPropertyAssignToConstructorPromotionRector::class,
'/data/*',
])
आप नियम और फ़ोल्डर जिन्हें आप नहीं अपनाना चाहते हैं, उन्हें स्पेसिफाई करें।
फ़ोल्डर '/फ़ोल्डरनाम/*'
फ़ाइलें 'फ़ाइलनाम' हैं।
नियम "SensitiveConstantNameRector" जोड़ा गया है क्योंकि
rector PHP एरे में undefined इंडेक्स मिलने पर इसे ढूँढ नहीं पाता है और उसे कॉन्स्टेंट के रूप में पहचानता है इसलिए इसे जबरन बदल देता है। इसीलिए हमने इसे अपवाद नियम में जोड़ा है।
```php
AddLiteralSeparatorToNumberRector //array -> []
SimplifyIfElseToTernaryRector
TernaryToElvisRector
ClassPropertyAssignToConstructorPromotionRector