首頁  >  文章  >  後端開發  >  我應該如何處理 PHP 中的返回類型棄用通知?

我應該如何處理 PHP 中的返回類型棄用通知?

Linda Hamilton
Linda Hamilton原創
2024-11-01 03:38:27539瀏覽

How Should I Handle Return Type Deprecation Notices in PHP?

參考:...的回傳類型應該與...相容,或應該使用#[ReturnTypeWillChange]屬性

背景:傳回型別與協方差

自PHP 7.0 起,函數與方法的傳回型別已經可用。這形成了其他程式碼可以依賴的契約。

例如:

<code class="php">class Base {
    public function getList(): Iterator {
       // ...
    }
}

// Calling code:
$foo = new Base();
var_dump($foo instanceOf Base); // true
var_dump($foo->getList() instanceOf Iterator); // true</code>

擴充類別時,可以定義更具體的回傳類型(協方差)。但是,不允許指定不同的返回類型或不指定返回類型。

向後相容性和棄用

向現有類別或介面新增回傳類型需要更改擴充或實作類別。隨著 PHP 8.0 中聯合類型的引入,返回類型被記錄下來,但不會作為錯誤強制執行。相反,添加了棄用通知。

#[ReturnTypeWillChange] 屬性

需要支援多個 PHP 版本和 8.0 之前的回傳類型的衝突程式碼導致了 #[ReturnTypeWillChange] 的開發] 屬性。當加入方法時,它會抑制 PHP 8.1 中的棄用通知。這為在 PHP 9.0 之前修正該問題提供了時間,其中可能會強制執行內部回傳類型。

解決方案

  1. 從折舊通知中識別方法並正確返回類型。
  2. 決定你的行動方案:

    • 等待庫或擴充更新(無需任何操作)。
    • 檢查類別是否已回傳正確的類型。
    • 確定更改回傳類型對於您的應用程式和擴充類別是否安全。
  3. 更改回傳類型是否安全:

    • 新增回傳類型。
  4. 如果您需要支援較舊的 PHP 版本或未更新的程式碼:

    • 新增 #暫時 [ReturnTypeWillChange] 屬性。

以上是我應該如何處理 PHP 中的返回類型棄用通知?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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