国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 後端開發(fā) php教程 修正 WordPress 編碼標準中的 PHP_CodeSniffer Null Trim() 錯誤

修正 WordPress 編碼標準中的 PHP_CodeSniffer Null Trim() 錯誤

Oct 16, 2024 am 06:11 AM

使用 PHP 8.x 處理 WordPress 專案時,您可能會遇到以下錯誤:

致命錯誤:未捕獲 PHP_CodeSnifferExceptionsRuntimeException:trim():在 /path/... 中不建議將 null 傳遞給字串類型的參數 #1 ($string)

此錯誤是由於 PHP 8.x 中的棄用警告而發(fā)生的,其中不再允許將 null 傳遞給 trim() 函數。具體來說,此問題出現在 WordPress 編碼標準 (WPCS) 嗅探中,該嗅探是 PHP_CodeSniffer 設定的一部分。截至撰寫本文之日,即使使用最新版本的 PHP_CodeSniffer 和 WordPress 編碼標準,此問題仍然存在。

了解 PHP_CodeSniffer 和 WPCS

PHP_CodeSniffer 是一個工具,透過檢查 PHP 程式碼是否違反指定規(guī)則來幫助開發(fā)人員維護編碼標準。 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' ) );

但是,正如軟體開發(fā)中的許多決策一樣,僅僅因為您可以這樣做,並不意味著您應該。

Fixing PHP_CodeSniffer Null Trim() Errors in WordPress Coding Standards

雖然之前的方法可能會修復錯誤,但請務必記住修改供應商文件不是可持續(xù)的解決方案。每次透過 Composer 更新依賴項時,所做的變更都會遺失。

更好的方法是建立補丁檔案。

建立補丁文件

這是有關如何針對該問題建立和應用修補程式的逐步指南

建立補丁文件

更強大的解決方案是建立修補程式檔案。此方法可讓您在每次安裝或更新依賴項時自動套用變更。

補丁文件是一個文字文件,其中包含文件兩個版本之間的差異 - 本質上是「之前」和「之後」快照。

在您的專案目錄中,建立一個資料夾來保存補丁檔案:

mkdir -p 補丁

在 patch/ 資料夾中,建立一個名為 fix-null-trim.patch 的新補丁檔案。您可以使用文字編輯器執(zhí)行此操作:

觸控補丁/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 中的有問題的行替換為更安全的版本,該版本使用 null 合併運算子 (??) 以避免將 null 傳遞給 trim()。

修改composer.json以套用補丁

接下來,您需要指示 Composer 在您安裝或更新依賴項時自動套用此修補程式。

開啟專案的composer.json 檔案。在“extra”部分下方新增以下配置。如果“額外”部分尚不存在,您將需要建立它。

    json

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

這告訴 Composer 在安裝或更新依賴項時將 fix-null-trim.patch 檔案套用到 wp-coding-standards/wpcs 套件。

安裝 Composer 補丁插件

要透過Composer套用補丁,您需要composer-patches外掛。執(zhí)行以下命令進行安裝:

作曲家需要 cweagans/作曲家補丁

應用補丁

現在,您可以透過執(zhí)行以下命令來套用修補程式:

作曲家安裝

在安裝過程中,Composer 會將 patch/ 資料夾中的補丁套用到 PrefixAllGlobalsSniff.php 檔案中。

透過建立和應用修補程式檔案,您確保您的修復在Composer更新中持續(xù)存在,遵循軟體開發(fā)的最佳實踐。定期監(jiān)控 PHP_CodeSniffer 和 WordPress 編碼標準的更新,因為這些問題可能會在未來版本中解決。 這種主動方法不僅可以提高程式碼質量,還可以改善 PHP 8.x 環(huán)境中的開發(fā)工作流程。

我已經在這個要點中分享了補丁檔案。請隨意使用它作為在您的專案中實施類似修復的參考!

以上是修正 WordPress 編碼標準中的 PHP_CodeSniffer Null Trim() 錯誤的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發(fā)現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何在PHP中實施身份驗證和授權? 如何在PHP中實施身份驗證和授權? Jun 20, 2025 am 01:03 AM

tosecurelyhandleauthenticationandationallizationInphp,lofterTheSesteps:1.AlwaysHashPasswordSwithPassword_hash()andverifyusingspasspassword_verify(),usepreparedStatatementStopreventsqlineptions,andStoreSeruserDatain usseruserDatain $ _sessiveferterlogin.2.implementrole-2.imaccessccsccccccccccccccccccccccccc.

如何在PHP中安全地處理文件上傳? 如何在PHP中安全地處理文件上傳? Jun 19, 2025 am 01:05 AM

要安全處理PHP中的文件上傳,核心在於驗證文件類型、重命名文件並限制權限。 1.使用finfo_file()檢查真實MIME類型,僅允許特定類型如image/jpeg;2.用uniqid()生成隨機文件名,存儲至非Web根目錄;3.通過php.ini和HTML表單限製文件大小,設置目錄權限為0755;4.使用ClamAV掃描惡意軟件,增強安全性。這些步驟有效防止安全漏洞,確保文件上傳過程安全可靠。

PHP中==(鬆散比較)和===(嚴格的比較)之間有什麼區(qū)別? PHP中==(鬆散比較)和===(嚴格的比較)之間有什麼區(qū)別? Jun 19, 2025 am 01:07 AM

在PHP中,==與===的主要區(qū)別在於類型檢查的嚴格程度。 ==在比較前會進行類型轉換,例如5=="5"返回true,而===要求值和類型都相同才會返回true,例如5==="5"返回false。使用場景上,===更安全應優(yōu)先使用,==僅在需要類型轉換時使用。

如何在PHP( - , *, /,%)中執(zhí)行算術操作? 如何在PHP( - , *, /,%)中執(zhí)行算術操作? Jun 19, 2025 pm 05:13 PM

PHP中使用基本數學運算的方法如下:1.加法用 號,支持整數和浮點數,也可用於變量,字符串數字會自動轉換但不推薦依賴;2.減法用-號,變量同理,類型轉換同樣適用;3.乘法用*號,適用於數字及類似字符串;4.除法用/號,需避免除以零,並註意結果可能是浮點數;5.取模用%號,可用於判斷奇偶數,處理負數時餘數符號與被除數一致。正確使用這些運算符的關鍵在於確保數據類型清晰並處理好邊界情況。

如何與PHP的NOSQL數據庫(例如MongoDB,Redis)進行交互? 如何與PHP的NOSQL數據庫(例如MongoDB,Redis)進行交互? Jun 19, 2025 am 01:07 AM

是的,PHP可以通過特定擴展或庫與MongoDB和Redis等NoSQL數據庫交互。首先,使用MongoDBPHP驅動(通過PECL或Composer安裝)創(chuàng)建客戶端實例並操作數據庫及集合,支持插入、查詢、聚合等操作;其次,使用Predis庫或phpredis擴展連接Redis,執(zhí)行鍵值設置與獲取,推薦phpredis用於高性能場景,Predis則便於快速部署;兩者均適用於生產環(huán)境且文檔完善。

我如何了解最新的PHP開發(fā)和最佳實踐? 我如何了解最新的PHP開發(fā)和最佳實踐? Jun 23, 2025 am 12:56 AM

TostaycurrentwithPHPdevelopmentsandbestpractices,followkeynewssourceslikePHP.netandPHPWeekly,engagewithcommunitiesonforumsandconferences,keeptoolingupdatedandgraduallyadoptnewfeatures,andreadorcontributetoopensourceprojects.First,followreliablesource

什麼是PHP,為什麼它用於Web開發(fā)? 什麼是PHP,為什麼它用於Web開發(fā)? Jun 23, 2025 am 12:55 AM

PHPbecamepopularforwebdevelopmentduetoitseaseoflearning,seamlessintegrationwithHTML,widespreadhostingsupport,andalargeecosystemincludingframeworkslikeLaravelandCMSplatformslikeWordPress.Itexcelsinhandlingformsubmissions,managingusersessions,interacti

如何設置PHP時區(qū)? 如何設置PHP時區(qū)? Jun 25, 2025 am 01:00 AM

tosetTherightTimeZoneInphp,restate_default_timezone_set()functionAtthestArtofyourscriptWithavalIdidentIdentifiersuchas'america/new_york'.1.usedate_default_default_timezone_set_set()

See all articles