PHP 8.0 函數參數語法變更:必需參數必須位於可選參數之前
當必需函數參數跟在可選參數。出現此錯誤的原因是舊版的 PHP 允許這種行為,但這種行為沒有意義,因為需要指定最後一個必要參數之前的所有參數。
範例:
考慮以下函數:
function test_function(int $var1 = 2, int $var2) { return $var1 / $var2; }
在 PHP 8.0中,此函數將引發以下棄用警告:
Deprecated: Required parameter $var2 follows optional parameter $var1 in...
棄用原因:
此更改可確保函數簽名遵循常識性假設,即必需參數應在可選參數之前聲明。這澄清了函數行為並簡化了使用 ReflectionFunctionAbstract 類別的分析。
解決方案:
要解決此問題,只需從早期參數中刪除預設值即可。對於上面的範例,函數將重寫為:
function test_function(int $var1, int $var2) { return $var1 / $var2; }
此變更不應影響函數的功能,因為在不聲明所有參數的情況下永遠無法呼叫函數。
以上是為什麼必要的 PHP 8.0 函數參數現在需要位於可選參數之前?的詳細內容。更多資訊請關注PHP中文網其他相關文章!