」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何處理 PHP 8.1 中的回傳類型衝突?

如何處理 PHP 8.1 中的回傳類型衝突?

發佈於2024-11-17
瀏覽:751

How to Handle Return Type Conflicts in PHP 8.1?

參考:返回類型衝突與#[\ReturnTypeWillChange] 屬性

上下文:
在PHP 8.1 中,指定返回類型方法變得更加普遍,導致與現有實現發生衝突。

問題:
當方法的返回類型從相容類型更改為不相容型別或未指定時,以下棄用出現通知:

Deprecated: Return type of [Method Name] should either be compatible with ..., or the #[\ReturnTypeWillChange] attribute should be used...

返回類型協方差的含義:
PHP 7.0 引入了回傳類型,確保基於指定約定呼叫程式碼的行為一致。擴充或實作類別必須維護相同或更具體的回傳類型。

棄用背景:
隨著 PHP 8.0 中 Union 類型的添加,內部函數和方法獲得了返回類型規格。但是,強制執行這些類型會破壞向後相容性。相反,針對暫定更改引入了棄用通知。

#[\ReturnTypeWillChange] 屬性的用途:
此屬性指示傳回類型的計畫變更。 PHP 8.1 忽略標有此屬性的方法的棄用通知,從而允許支援較舊的 PHP 版本。

要做什麼:

  1. 識別中提到的方法棄用通知和預期返回類型。
  2. 如果可能,請變更方法的傳回類型以符合預期類型。
  3. 如果需要,透過新增 #[ 暫時抑制棄用通知\ReturnTypeWillChange] 屬性。

注意: PHP 9.0 中可能會強制執行返回類型,因此計劃相應地處理 #[\ReturnTypeWillChange] 屬性。

最新教學 更多>
  • 如何使用「setState」更新狀態中的巢狀物件?
    如何使用「setState」更新狀態中的巢狀物件?
    使用setState 更新state.item[1] 在這種情況下,您正在嘗試更新物件內的物件使用setState 在在您的狀態中。若要正確更新狀態,您需要複製整個狀態對象,修改副本,然後將狀態設定為更新後的副本。 以下是如何更新 state.item[1] 使用setState:// 1. Mak...
    程式設計 發佈於2024-11-17
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-11-17
  • 將 PHP 連接到資料庫:MySQL 初學者
    將 PHP 連接到資料庫:MySQL 初學者
    在PHP 中連接到MySQL 資料庫至關重要,步驟如下:安裝MySQL 擴充功能使用mysqli_connect() 函數建立連接,參數包括主機、使用者名稱、密碼和資料庫名稱使用mysqli_connect_error() 函數檢查連接是否成功實戰案例:取得所有用戶,透過查詢資料庫並使用mysqli...
    程式設計 發佈於2024-11-17
  • 為什麼 CSS `visibility:hidden` 無法達到懸停效果?
    為什麼 CSS `visibility:hidden` 無法達到懸停效果?
    揭開謎團:為什麼CSS 可見性在懸停時失敗CSS 可見性提供了操作元素可見性的便捷方法,但有時它會偶然發現意想不到的障礙。考慮這樣一個場景,您定義了一個「擾流器」類別來使文字最初不可見,並在滑鼠懸停時顯示它。儘管您有期望,文字仍然頑固地保持在隱藏狀態,無視您的懸停努力。 深入探討原因這種令人困惑的行...
    程式設計 發佈於2024-11-17
  • 何時在 JavaScript 中使用 parseInt() 和 Number() 進行字串到數字的轉換?
    何時在 JavaScript 中使用 parseInt() 和 Number() 進行字串到數字的轉換?
    使用parseInt()和Number()將字串轉換為數字在JavaScript中將字串轉換為數字時,兩個常用的函數是parseInt () 和數字()。雖然它們都具有相同的數值轉換目的,但它們的方法和行為有所不同。 parseInt()parseInt() 執行更具體的任務,稱為解析。它嘗試從字串...
    程式設計 發佈於2024-11-17
  • 大批
    大批
    方法是可以在物件上呼叫的 fns 數組是對象,因此它們在 JS 中也有方法。 slice(begin):將陣列的一部分提取到新數組中,而不改變原始數組。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index ...
    程式設計 發佈於2024-11-17
  • 項目 避免不必要地使用檢查異常
    項目 避免不必要地使用檢查異常
    檢查異常是 Java 中的一個強大工具,因為它們迫使程式設計師處理異常情況,從而提高程式碼可靠性。然而,過度使用可能會導致 API 難以使用。為了證明檢查異常是合理的,情況必須是真正的異常並且程式設計師能夠採取有用的操作。否則,未經檢查的異常可能更合適。 Java 8 為檢查異常的使用帶來了額外的...
    程式設計 發佈於2024-11-17
  • 為什麼我的 PDO 更新查詢無法修改 MySQL 中的特定行?
    為什麼我的 PDO 更新查詢無法修改 MySQL 中的特定行?
    使用PDO 進行MySQL 更新查詢當嘗試使用PDO 和MySQL 更新資料庫行時,您可能會遇到這樣的情況:您的程式碼執行失敗。本指南探討了此錯誤的可能原因並提供了解決方案。 錯誤:不正確的 UPDATE 語法您遇到的錯誤源自於不正確的 UPDATE 語法。具體來說,您的查詢正在嘗試用提供的值替換 ...
    程式設計 發佈於2024-11-17
  • 資料庫遷移對於 Golang 服務,為什麼重要?
    資料庫遷移對於 Golang 服務,為什麼重要?
    DB Migration, why it matters? Have you ever faced the situations when you deploy new update on production with updated database schemas, but ...
    程式設計 發佈於2024-11-17
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    程式設計 發佈於2024-11-17
  • 為什麼在 Java 中連接空字串不會拋出 NullPointerException?
    為什麼在 Java 中連接空字串不會拋出 NullPointerException?
    Java 連接空字串在 Java 中,連接空字串可能看起來違反直覺,會導致 NullPointerException 出現。但是,此操作成功執行,結果是一個包含“null”的字串,後跟連接的字串。 為什麼會這樣? 根據 Java 語言規範(JLS) 8,§ 15.18.1,在字串連接期間,空引用明確...
    程式設計 發佈於2024-11-17
  • Java 正規表示式中的擷取群組如何運作?
    Java 正規表示式中的擷取群組如何運作?
    了解Java 正規表示式擷取群組在此程式碼片段中,我們使用Java 的正規表示式(regex) 函式庫來擷取字串的一部分。正規表示式定義為“(.)(\d )(.)”,其中:(.*):符合下一組之前的任意數量的任意字元.(\d ): 符合上一組之後的任意數量的數字。 (.*): 符合上一組之後的任意數...
    程式設計 發佈於2024-11-17
  • 如何在 JavaScript 中將提示框中的使用者輸入轉換為數值?
    如何在 JavaScript 中將提示框中的使用者輸入轉換為數值?
    從提示框中檢索數位輸入將使用者輸入從提示框轉換為數值對於在JavaScript 中執行數學計算至關重要。這種轉換可以透過函數 parseInt() 和 parseFloat() 來實現。 parseInt() 和 parseFloat()parseInt() 和 parseFloat() 將數字的字...
    程式設計 發佈於2024-11-17
  • 如何將 C++ 程式碼轉換為 C:自動和手動方法指南
    如何將 C++ 程式碼轉換為 C:自動和手動方法指南
    將C 代碼轉換為C考慮到語言之間的複雜性和差異,將C 代碼轉換為純C 可能是一項艱鉅的任務。然而,有自動化工具和手動方法來應對這項挑戰。 自動轉換工具值得考慮的自動化解決方案是 Comeau 的 C 編譯器。該工具從 C 產生 C 程式碼,讓您可以維護 C 程式碼並根據需要將其轉換為 C。但是,需要...
    程式設計 發佈於2024-11-17
  • 在 PHP 中調整 PNG 大小時如何保持透明度?
    在 PHP 中調整 PNG 大小時如何保持透明度?
    在PHP 中調整PNG 大小時保留透明度在PHP 中調整具有透明背景的PNG 圖像大小時,確保透明度是至關重要的維持。但網路上很多程式碼範例都未能很好地實現這一點,導致調整大小後背景變成黑色。 要解決這個問題,需要對程式碼進行具體調整。在執行 imagecolorallocatealpha() 函數...
    程式設計 發佈於2024-11-17

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3