自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 中聯合類型的引入,返回類型被記錄下來,但不會作為錯誤強制執行。相反,添加了棄用通知。
需要支援多個 PHP 版本和 8.0 之前的回傳類型的衝突程式碼導致了 #[ReturnTypeWillChange] 的開發] 屬性。當加入方法時,它會抑制 PHP 8.1 中的棄用通知。這為在 PHP 9.0 之前修正該問題提供了時間,其中可能會強制執行內部回傳類型。
決定你的行動方案:
更改回傳類型是否安全:
如果您需要支援較舊的 PHP 版本或未更新的程式碼:
以上是我應該如何處理 PHP 中的返回類型棄用通知?的詳細內容。更多資訊請關注PHP中文網其他相關文章!