Membetulkan Ralat PHP_CodeSniffer Null Trim() dalam Piawaian Pengekodan WordPress

Susan Sarandon
Lepaskan: 2024-10-16 06:11:30
asal
621 orang telah melayarinya

Semasa mengerjakan projek WordPress dengan PHP 8.x, anda mungkin menghadapi ralat berikut:

Ralat maut: Uncaught PHP_CodeSnifferExceptionsRuntimeException: trim(): Melepasi null kepada parameter #1 ($rentetan) rentetan jenis ditamatkan dalam /path/...

Ralat ini berlaku disebabkan amaran penamatan dalam PHP 8.x, yang menghantar null ke fungsi trim() tidak lagi dibenarkan. Secara khusus, isu ini timbul dalam hiduan Standard Pengekodan WordPress (WPCS), sebahagian daripada persediaan PHP_CodeSniffer. Sehingga tarikh penulisan ini, walaupun dengan versi terkini PHP_CodeSniffer dan Piawaian Pengekodan WordPress, isu ini berterusan.

Memahami PHP_CodeSniffer dan WPCS

PHP_CodeSniffer ialah alat yang membantu pembangun mengekalkan standard pengekodan dengan menyemak kod PHP mereka untuk pelanggaran peraturan tertentu. Piawaian Pengekodan WordPress (WPCS) menyediakan satu set garis panduan untuk menulis kod yang konsisten dan bersih dalam projek WordPress. Ralat yang dinyatakan di atas biasanya menunjukkan bahawa coretan kod tidak mematuhi piawaian ini disebabkan oleh perubahan dalam tingkah laku PHP.

Membetulkan

Untuk membetulkannya, kami boleh mengubah suai fail yang menyebabkan isu itu secara manual, cari baris tempat trim() dipanggil dan kemas kini kod untuk memastikan nilai nol dikendalikan dengan betul semasa memanggil trim().

Contohnya, dalam fail vendor/wp-coding-standards/wpcs/WordPress/Sniffs/NamingConventions/PrefixAllGlobalsSniff.php, cari baris 280 dan gantikan baris berikut:

// 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' ) );
Salin selepas log masuk

Walau bagaimanapun, seperti dalam banyak keputusan dalam pembangunan perisian, hanya kerana anda boleh melakukan ini, tidak bermakna anda harus.

Fixing PHP_CodeSniffer Null Trim() Errors in WordPress Coding Standards

Walaupun pendekatan sebelumnya mungkin membetulkan ralat, adalah penting untuk diingat bahawa mengubah suai fail vendor bukanlah penyelesaian yang mampan. Perubahan akan hilang setiap kali anda mengemas kini kebergantungan anda melalui Komposer.

Pendekatan yang lebih baik, maka, adalah dengan mencipta fail tampalan.

Mencipta Fail Patch

Berikut ialah panduan langkah demi langkah tentang cara membuat dan menggunakan tampalan untuk isu itu

Buat Fail Patch

Penyelesaian yang lebih mantap ialah membuat fail tampalan. Kaedah ini membolehkan anda menggunakan perubahan anda secara automatik setiap kali anda memasang atau mengemas kini kebergantungan anda.

Fail tampalan ialah fail teks yang mengandungi perbezaan antara dua versi fail—pada asasnya syot kilat "sebelum" dan "selepas".

Dalam direktori projek anda, cipta folder untuk menyimpan fail tampalan:

mkdir -p tampalan

Di dalam patch/ folder, buat fail tampalan baharu yang dipanggil fix-null-trim.patch. Anda boleh melakukan ini dengan editor teks anda:

tampalan sentuh/fix-null-trim.patch

Buka fix-null-trim.patch dalam editor teks anda dan tambahkan kandungan berikut:

  --- 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' ) );
Salin selepas log masuk

Tampalan ini memberitahu Komposer untuk menggantikan baris bermasalah dalam PrefixAllGlobalsSniff.php dengan versi yang lebih selamat yang menggunakan pengendali penggabungan nol (??) untuk mengelak menghantar null kepada memangkas().

Ubah suai composer.json untuk Menggunakan Patch

Seterusnya, anda perlu mengarahkan Komposer untuk menggunakan tampung ini secara automatik apabila anda memasang atau mengemas kini kebergantungan anda.

Buka fail composer.json projek anda. Tambahkan konfigurasi berikut di bawah bahagian "tambahan". Jika bahagian "tambahan" belum wujud, anda perlu menciptanya.

    json

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

Salin selepas log masuk

Ini memberitahu Komposer untuk menggunakan fail fix-null-trim.patch pada pakej wp-coding-standards/wpcs apabila ia memasang atau mengemas kini kebergantungan.

Pasang Pemalam Composer Patch

Untuk menggunakan patch melalui Composer, anda memerlukan plugin composer-patches. Jalankan arahan berikut untuk memasang:

komposer memerlukan cweagans/tampalan komposer

Sapukan Patch

Kini, anda boleh menggunakan tampung dengan menjalankan arahan berikut:

pemasangan komposer

Semasa pemasangan, Komposer akan menggunakan tampalan dari patch/ folder ke fail PrefixAllGlobalsSniff.php.

Dengan mencipta dan menggunakan fail tampalan, anda memastikan bahawa pembetulan anda berterusan merentas kemas kini Komposer, mematuhi amalan terbaik dalam pembangunan perisian. Pantau kemas kini pada PHP_CodeSniffer dan Piawaian Pengekodan WordPress secara kerap, kerana isu ini mungkin dapat diselesaikan dalam keluaran akan datang. Pendekatan proaktif ini bukan sahaja meningkatkan kualiti kod tetapi juga memperbaik aliran kerja pembangunan anda dalam persekitaran PHP 8.x.

Saya telah berkongsi fail tampalan dalam Gist ini. Jangan ragu untuk menggunakannya sebagai rujukan untuk melaksanakan pembetulan serupa dalam projek anda!

Atas ialah kandungan terperinci Membetulkan Ralat PHP_CodeSniffer Null Trim() dalam Piawaian Pengekodan WordPress. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan