PHP 8.x के साथ वर्डप्रेस प्रोजेक्ट्स पर काम करते समय, आपको निम्न त्रुटि का सामना करना पड़ सकता है:
घातक त्रुटि: ध्यान में न आया PHP_CodeSniffer\Exceptions\RuntimeException: ट्रिम(): टाइप स्ट्रिंग के पैरामीटर #1 ($string) में शून्य को पास करना /path/...
में अप्रचलित हैयह त्रुटि PHP 8.x में एक बहिष्करण चेतावनी के कारण होती है, जहां अब ट्रिम() फ़ंक्शन में शून्य पास करने की अनुमति नहीं है। विशेष रूप से, यह समस्या वर्डप्रेस कोडिंग स्टैंडर्ड्स (डब्ल्यूपीसीएस) स्निफ़ के भीतर उत्पन्न होती है, जो PHP_CodeSniffer सेटअप का हिस्सा है। इस लेखन की तिथि तक, PHP_CodeSniffer और वर्डप्रेस कोडिंग मानकों के नवीनतम संस्करणों के साथ भी, यह समस्या बनी हुई है।
PHP_CodeSniffer एक उपकरण है जो डेवलपर्स को निर्दिष्ट नियमों के उल्लंघन के लिए उनके PHP कोड की जांच करके कोडिंग मानकों को बनाए रखने में मदद करता है। वर्डप्रेस कोडिंग स्टैंडर्ड्स (डब्ल्यूपीसीएस) वर्डप्रेस प्रोजेक्ट्स में सुसंगत और साफ कोड लिखने के लिए दिशानिर्देशों का एक सेट प्रदान करते हैं। ऊपर उल्लिखित त्रुटि आम तौर पर इंगित करती है कि PHP के व्यवहार में परिवर्तन के कारण एक कोड स्निपेट इन मानकों का पालन नहीं कर रहा है।
इसे ठीक करने के लिए, हम समस्या पैदा करने वाली फ़ाइल को मैन्युअल रूप से संशोधित कर सकते हैं, उस लाइन का पता लगा सकते हैं जहां ट्रिम() को कॉल किया जाता है और यह सुनिश्चित करने के लिए कोड को अपडेट करें कि ट्रिम() को कॉल करते समय शून्य मान ठीक से संभाले जाते हैं।
उदाहरण के लिए, फ़ाइल में vendor/wp-coding-standards/wpcs/WordPress/Sniffs/NamingConventions/PrefixAllGlobalsSniff.php, लाइन 280 ढूंढें और निम्नलिखित लाइन बदलें:
// this $cl_prefixes = trim( PHPCSHelper::get_config_data( 'prefixes' ); // to this $cl_prefixes = is_null( PHPCSHelper::get_config_data( 'prefixes' ) ) ? '' : trim( PHPCSHelper::get_config_data( 'prefixes' ) );
हालाँकि, जैसा कि सॉफ़्टवेयर विकास में कई निर्णयों में होता है, सिर्फ इसलिए कि आप ऐसा कर सकते हैं, इसका मतलब यह नहीं है कि आपको ऐसा करना चाहिए।
हालांकि पिछला दृष्टिकोण त्रुटि को ठीक कर सकता है, यह याद रखना महत्वपूर्ण है कि विक्रेता फ़ाइलों को संशोधित करना एक स्थायी समाधान नहीं है। हर बार जब आप कंपोज़र के माध्यम से अपनी निर्भरताएँ अपडेट करेंगे तो परिवर्तन खो जाएंगे।
तो फिर, एक बेहतर तरीका एक पैच फ़ाइल बनाना है।
यहां समस्या के लिए पैच बनाने और लागू करने के बारे में चरण-दर-चरण मार्गदर्शिका दी गई है
एक अधिक मजबूत समाधान एक पैच फ़ाइल बनाना है। यह विधि आपको हर बार अपनी निर्भरता स्थापित करने या अद्यतन करने पर अपने परिवर्तनों को स्वचालित रूप से लागू करने की अनुमति देती है।
एक पैच फ़ाइल एक टेक्स्ट फ़ाइल है जिसमें फ़ाइल के दो संस्करणों के बीच अंतर होता है - अनिवार्य रूप से "पहले" और "बाद" स्नैपशॉट।
अपनी प्रोजेक्ट निर्देशिका में, पैच फ़ाइल रखने के लिए एक फ़ोल्डर बनाएं:
mkdir -p पैच
पैच/ फ़ोल्डर के अंदर, फिक्स-नल-ट्रिम.पैच नामक एक नई पैच फ़ाइल बनाएं। आप इसे अपने टेक्स्ट संपादक के साथ कर सकते हैं:
स्पर्श पैच/फिक्स-नल-ट्रिम.पैच
अपने टेक्स्ट एडिटर में फिक्स-नल-ट्रिम.पैच खोलें और निम्नलिखित सामग्री जोड़ें:
--- a/vendor/wp-coding-standards/wpcs/WordPress/Sniffs/NamingConventions/PrefixAllGlobalsSniff.php b/vendor/wp-coding-standards/wpcs/WordPress/Sniffs/NamingConventions/PrefixAllGlobalsSniff.php @@ -280,7 280,7 @@ // Original code with `trim()` // Update this line: - $cl_prefixes = trim( PHPCSHelper::get_config_data( 'prefixes' ) ); $cl_prefixes = is_null( PHPCSHelper::get_config_data( 'prefixes' ) ) ? '' : trim( PHPCSHelper::get_config_data( 'prefixes' ) ); --- a/vendor/wp-coding-standards/wpcs/WordPress/Sniffs/WP/I18nSniff.php b/vendor/wp-coding-standards/wpcs/WordPress/Sniffs/WP/I18nSniff.php @@ -194,7 194,7 @@ // Original code with `trim()` // Update this line: - $cl_text_domain = trim( PHPCSHelper::get_config_data( 'text_domain' ) ); $cl_text_domain = is_null(PHPCSHelper::get_config_data( 'text_domain' )) ? '' : trim( PHPCSHelper::get_config_data( 'text_domain' ) ); --- a/vendor/wp-coding-standards/wpcs/WordPress/Sniffs/Sniff.php b/vendor/wp-coding-standards/wpcs/WordPress/Sniffs/Sniff.php @@ -1144,7 1144,7 @@ // Original code with `trim()` // Update this line: - $cl_supported_version = trim( PHPCSHelper::get_config_data( 'minimum_supported_wp_version' ) ); $cl_supported_version = is_null(PHPCSHelper::get_config_data( 'minimum_supported_wp_version' )) ? '' : trim( PHPCSHelper::get_config_data( 'minimum_supported_wp_version' ) );
यह पैच कंपोजर को PrefixAllGlobalsSniff.php में समस्याग्रस्त लाइन को एक सुरक्षित संस्करण के साथ बदलने के लिए कहता है जो शून्य को ट्रिम करने से बचने के लिए नल कोलेसिंग ऑपरेटर (??) का उपयोग करता है।
इसके बाद, आपको कंपोजर को निर्देश देना होगा कि जब भी आप अपनी निर्भरताएं इंस्टॉल या अपडेट करें तो यह पैच स्वचालित रूप से लागू हो।
अपने प्रोजेक्ट की कंपोज़र.जेसन फ़ाइल खोलें। "अतिरिक्त" अनुभाग के अंतर्गत निम्नलिखित कॉन्फ़िगरेशन जोड़ें। यदि "अतिरिक्त" अनुभाग पहले से मौजूद नहीं है, तो आपको इसे बनाना होगा।
json "extra": { "patches": { "wp-coding-standards/wpcs": { "Fix null trim() issue": "patches/fix-null-trim.patch" } } }
यह कंपोजर को निर्भरता स्थापित या अद्यतन करते समय wp-coding-standards/wpcs पैकेज पर फिक्स-नल-ट्रिम.पैच फ़ाइल को लागू करने के लिए कहता है।
कंपोजर के माध्यम से पैच लागू करने के लिए, आपको कंपोजर-पैच प्लगइन की आवश्यकता है। इंस्टॉल करने के लिए निम्न कमांड चलाएँ:
संगीतकार को सीवीगन्स/संगीतकार-पैच की आवश्यकता है
अब, आप निम्न आदेश चलाकर पैच लागू कर सकते हैं:
संगीतकार इंस्टॉल
इंस्टॉलेशन के दौरान, कंपोजर पैच/फ़ोल्डर से पैच को PrefixAllGlobalsSniff.php फ़ाइल पर लागू करेगा।
एक पैच फ़ाइल बनाकर और लागू करके, आप सुनिश्चित करते हैं कि आपके फ़िक्सेस सॉफ़्टवेयर विकास में सर्वोत्तम प्रथाओं का पालन करते हुए, कंपोज़र अपडेट्स में बने रहते हैं। PHP_CodeSniffer और वर्डप्रेस कोडिंग मानकों के अपडेट की नियमित रूप से निगरानी करें, क्योंकि इन मुद्दों को भविष्य के रिलीज में हल किया जा सकता है। यह सक्रिय दृष्टिकोण न केवल कोड की गुणवत्ता को बढ़ाता है बल्कि PHP 8.x वातावरण में आपके विकास वर्कफ़्लो को भी बेहतर बनाता है।
मैंने इस गिस्ट में पैच फ़ाइल साझा की है। अपनी परियोजनाओं में समान सुधारों को लागू करने के लिए इसे संदर्भ के रूप में बेझिझक उपयोग करें!
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3