$yyy之後的可選參數$xxx是必要的
P粉764836448
P粉764836448 2023-08-15 21:10:56
0
2
641
<p><br /></p> <pre class="brush:none;toolbar:false;">已棄用:必要參數 $xxx 在可選參數 $yyy 之後... </pre> <p>自從升級到 PHP 8.0 後,執行以下程式碼會拋出此錯誤:</p> <pre class="brush:php;toolbar:false;">function test_function(int $var1 = 2, int $var2) { return $var1 / $var2; } </pre> <p>在過去的 PHP 版本中,這個是沒有問題的。 </p>
P粉764836448
P粉764836448

全部回覆(2)
P粉616383625

沒有預設值的必要參數應該放在前面。

function test_function(int $xxx, int $yyy = 2)
{
    return $xxx * $yyy;
}
P粉451614834

這種函數宣告方式在PHP 8.0中已被棄用。像這樣編寫函數從來都沒有意義,因為在呼叫函數時,所有參數(直到最後一個必需參數)都需要指定。這也導致了混淆,因為使用ReflectionFunctionAbstract類別來分析函數和方法時會出現問題。

新的棄用只是確保函數簽名遵循常識假設,即必需參數應該始終在可選參數之前聲明。

應該重寫函數以刪除先前參數的預設值。由於函數永遠不會在不聲明所有參數的情況下被調用,因此這對其功能不會產生任何影響。

function test_function(int $var1, int $var2) {
    return $var1 / $var2;
}
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板