"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > إصلاح أخطاء PHP_CodeSniffer Null Trim() في معايير الترميز في WordPress

إصلاح أخطاء PHP_CodeSniffer Null Trim() في معايير الترميز في WordPress

تم النشر بتاريخ 2024-11-01
تصفح:998

أثناء العمل على مشاريع WordPress باستخدام PHP 8.x، قد تواجه الخطأ التالي:

خطأ فادح: لم يتم اكتشاف PHP_CodeSniffer\Exceptions\RuntimeException: Trim(): تم إهمال تمرير قيمة فارغة إلى المعلمة رقم 1 ($string) من سلسلة النوع في /path/...

يحدث هذا الخطأ بسبب تحذير الإهمال في PHP 8.x، حيث لم يعد تمرير القيمة null إلى الدالة Trim() مسموحًا به. على وجه التحديد، تنشأ هذه المشكلة ضمن معايير ترميز WordPress (WPCS)، وهي جزء من إعداد PHP_CodeSniffer. اعتبارًا من تاريخ كتابة هذه السطور، حتى مع أحدث الإصدارات من PHP_CodeSniffer وWordPress Coding Standards، لا تزال هذه المشكلة قائمة.

فهم PHP_CodeSniffer وWPCS

PHP_CodeSniffer هي أداة تساعد المطورين في الحفاظ على معايير البرمجة عن طريق التحقق من كود PHP الخاص بهم بحثًا عن انتهاكات القواعد المحددة. توفر معايير الترميز في WordPress (WPCS) مجموعة من الإرشادات لكتابة تعليمات برمجية متسقة ونظيفة في مشاريع WordPress. يشير الخطأ المذكور أعلاه عادةً إلى أن مقتطف التعليمات البرمجية لا يلتزم بهذه المعايير بسبب التغييرات في سلوك PHP.

تحديد

لإصلاح ذلك، يمكننا تعديل الملف الذي يسبب المشكلة يدويًا، وتحديد السطر الذي يتم استدعاء Trim() فيه وتحديث الكود لضمان معالجة القيم الخالية بشكل صحيح عند استدعاء Trim().

على سبيل المثال، في الملف 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' ) );

ومع ذلك، كما هو الحال في الكثير من القرارات المتعلقة بتطوير البرمجيات، فقط لأنك تستطيع القيام بذلك، لا يعني أنه يجب عليك.

Fixing PHP_CodeSniffer Null Trim() Errors in WordPress Coding Standards

على الرغم من أن الطريقة السابقة قد تؤدي إلى إصلاح الخطأ، فمن المهم أن تتذكر أن تعديل ملفات البائع ليس حلاً مستدامًا. سيتم فقدان التغييرات في كل مرة تقوم فيها بتحديث تبعياتك عبر Composer.

الطريقة الأفضل إذن هي إنشاء ملف تصحيح.

إنشاء ملف التصحيح

إليك دليل خطوة بخطوة حول كيفية إنشاء تصحيح للمشكلة وتطبيقه

قم بإنشاء ملف التصحيح

الحل الأكثر قوة هو إنشاء ملف تصحيح. تتيح لك هذه الطريقة تطبيق تغييراتك تلقائيًا في كل مرة تقوم فيها بتثبيت أو تحديث تبعياتك.

ملف التصحيح هو ملف نصي يحتوي على الاختلافات بين نسختين من الملف - بشكل أساسي لقطة "قبل" و"بعد".

في دليل المشروع الخاص بك، قم بإنشاء مجلد للاحتفاظ بملف التصحيح:

تصحيحات mkdir -p

داخل مجلد التصحيحات/، قم بإنشاء ملف تصحيح جديد يسمى Fix-null-trim.patch. يمكنك القيام بذلك باستخدام محرر النصوص الخاص بك:

تصحيحات اللمس/fix-null-trim.patch

افتحfix-null-trim.patch في محرر النصوص لديك وأضف المحتوى التالي:

  --- 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' ) );

يطلب هذا التصحيح من Composer استبدال السطر الذي به مشكلة في PrefixAllGlobalsSniff.php بإصدار أكثر أمانًا يستخدم عامل الدمج الفارغ (؟؟) لتجنب تمرير القيمة الخالية إلى القطع ().

قم بتعديل Composer.json لتطبيق التصحيح

بعد ذلك، تحتاج إلى توجيه Composer لتطبيق هذا التصحيح تلقائيًا عندما تقوم بتثبيت أو تحديث التبعيات الخاصة بك.

افتح ملف Composer.json الخاص بمشروعك. أضف التكوين التالي ضمن قسم "إضافي". إذا لم يكن القسم "الإضافي" موجودًا بالفعل، فستحتاج إلى إنشائه.

    json

    "extra": {
        "patches": {
            "wp-coding-standards/wpcs": {
                "Fix null trim() issue": "patches/fix-null-trim.patch"
            }
        }
    }

يُخبر هذا الملحن بتطبيق ملف Fix-null-trim.patch على حزمة wp-coding-standards/wpcs عندما يقوم بتثبيت التبعيات أو تحديثها.

قم بتثبيت البرنامج المساعد لتصحيح الملحن

لتطبيق التصحيحات عبر Composer، تحتاج إلى البرنامج المساعد Composer-patches. قم بتشغيل الأمر التالي للتثبيت:

يتطلب الملحن أدوات cweagans/تصحيحات الملحن

تطبيق التصحيح

الآن، يمكنك تطبيق التصحيح عن طريق تشغيل الأمر التالي:

تثبيت الملحن

أثناء التثبيت، سيقوم Composer بتطبيق التصحيح من المجلد/التصحيحات على ملف PrefixAllGlobalsSniff.php.

من خلال إنشاء وتطبيق ملف التصحيح ، فإنك تضمن أن إصلاحاتك تستمر عبر تحديثات Composer ، مع الالتزام بأفضل الممارسات في تطوير البرامج. راقب بانتظام تحديثات PHP_CodeSniffer وWordPress Coding Standards، حيث قد يتم حل هذه المشكلات في الإصدارات المستقبلية. لا يؤدي هذا النهج الاستباقي إلى تحسين جودة التعليمات البرمجية فحسب، بل يعمل أيضًا على تحسين سير عمل التطوير في بيئات PHP 8.x.

لقد قمت بمشاركة ملف التصحيح في هذا Gist. لا تتردد في استخدامه كمرجع لتنفيذ إصلاحات مماثلة في مشاريعك!

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/sarahcssiqueira/fixing-phpcodesniffer-null-trim-errors-in-wordpress-coding-standards-31k1?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3