


Membetulkan Ralat PHP_CodeSniffer Null Trim() dalam Piawaian Pengekodan WordPress
Oct 16, 2024 am 06:11 AMSemasa 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' ) );
Walau bagaimanapun, seperti dalam banyak keputusan dalam pembangunan perisian, hanya kerana anda boleh melakukan ini, tidak bermakna anda harus.
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' ) );
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" } } }
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!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

TosecurelyhandleAuthenticationandauthorizationInphp, ikuti: 1.alwayshashpasswordswithpassword_hash () andverifyUsingPassword_verify (), usePePreparedStatementStopreventsqlInjection, andStoreUserDatain $ _SessionAsLogin.2.implescureRoleRoleRoleRoleRole

Untuk mengendalikan muat naik fail dengan selamat di PHP, terasnya adalah untuk mengesahkan jenis fail, menamakan semula fail, dan menyekat kebenaran. 1. Gunakan finfo_file () untuk memeriksa jenis mime sebenar, dan hanya jenis tertentu seperti imej/jpeg dibenarkan; 2. Gunakan uniqid () untuk menghasilkan nama fail rawak dan simpannya dalam direktori akar bukan web; 3. Hadkan saiz fail melalui borang php.ini dan html, dan tetapkan kebenaran direktori ke 0755; 4. Gunakan Clamav untuk mengimbas malware untuk meningkatkan keselamatan. Langkah -langkah ini dengan berkesan menghalang kelemahan keselamatan dan memastikan bahawa proses muat naik fail adalah selamat dan boleh dipercayai.

Dalam PHP, perbezaan utama antara == dan == adalah ketat pemeriksaan jenis. == Penukaran jenis akan dilakukan sebelum perbandingan, contohnya, 5 == "5" pulangan benar, dan === meminta nilai dan jenis adalah sama sebelum benar akan dikembalikan, sebagai contoh, 5 === "5" mengembalikan palsu. Dalam senario penggunaan, === lebih selamat dan harus digunakan terlebih dahulu, dan == hanya digunakan apabila penukaran jenis diperlukan.

Kaedah menggunakan operasi matematik asas dalam PHP adalah seperti berikut: 1. Tanda tambahan menyokong bilangan bulat dan nombor terapung, dan juga boleh digunakan untuk pembolehubah. Nombor rentetan akan ditukar secara automatik tetapi tidak disyorkan kepada kebergantungan; 2. Tanda -tanda pengurangan - tanda, pembolehubah adalah sama, dan penukaran jenis juga terpakai; 3. Tanda -tanda pendaraban menggunakan tanda *, yang sesuai untuk nombor dan rentetan yang serupa; 4. Bahagian menggunakan / tanda, yang perlu mengelakkan pembahagian dengan sifar, dan perhatikan bahawa hasilnya mungkin nombor terapung; 5. Mengambil tanda modulus boleh digunakan untuk menilai angka ganjil dan bahkan, dan apabila memproses nombor negatif, tanda -tanda selebihnya selaras dengan dividen. Kunci untuk menggunakan pengendali ini dengan betul adalah untuk memastikan bahawa jenis data adalah jelas dan keadaan sempadan ditangani dengan baik.

Ya, PHP boleh berinteraksi dengan pangkalan data NoSQL seperti MongoDB dan Redis melalui sambungan atau perpustakaan tertentu. Pertama, gunakan pemacu MongoDBPHP (dipasang melalui PECL atau komposer) untuk membuat contoh pelanggan dan mengendalikan pangkalan data dan koleksi, penyisipan sokongan, pertanyaan, pengagregatan dan operasi lain; Kedua, gunakan perpustakaan predis atau lanjutan phpredis untuk menyambung ke REDIS, lakukan tetapan dan pengambilalihan nilai utama, dan mengesyorkan PHPREDI untuk senario berprestasi tinggi, sementara Predis mudah untuk penempatan pesat; Kedua-duanya sesuai untuk persekitaran pengeluaran dan didokumentasikan dengan baik.

Tostaycurrentwithphpdevelopmentsandbestpractices, followeyNewsssourcesLikePhp.netandphpweekly, engageWithCommunitiesonforumsandconference, keeptoolingupdatedandgraduallyAdoptNewFeatures, dan readribcoursourcourceSource

Phpbecamepopularforwebdevelopmentduetoitseaseoflearning, seamlessintegrationwithhtml, widespreadhostingsupport, andalargeecosystemincludingframeworkslikelaravelandcmsplatformsLikeWordPress.itexcelsinhandessubmissions

TosetTheRightTimeZoneinPhp, USEDATE_DEFAULT_TIMEZONE_SET () functionAtthestArtAfyourscriptwithavalididentifiersuchas'america/new_york'.1.usedate_default_timeSet ()
