PHP 8.0:必要參數跟隨選用參數
升級到PHP 8.0 後,開發者可能會遇到以下錯誤:
Deprecated: Required parameter $xxx follows optional parameter $yyy in...
當函數的宣告包含可選參數後面跟著必需參數時,就會出現此錯誤。例如,以下程式碼將觸發錯誤:
function test_function(int $var1 = 2, int $var2) { return $var1 / $var2; }
澄清功能意義
在 8.0 之前的 PHP 版本中,允許此類函數聲明。然而,他們在使用 ReflectionFunctionAbstract 類別分析函數和方法時引入了不一致和混亂。
新要求
PHP 8.0 透過要求所有必需的內容強制執行更符合邏輯的方法參數必須在任何可選參數之前聲明。
建議解決方案
要解決該錯誤,只需從可選參數中刪除預設值即可。由於無論如何在不指定所有參數的情況下都無法呼叫函數,因此功能應該不受影響:
function test_function(int $var1, int $var2) { return $var1 / $var2; }
以上是PHP 8.0:為什麼現在需要位於可選參數之前?的詳細內容。更多資訊請關注PHP中文網其他相關文章!