$yyy之後的可選參數$xxx是必要的
P粉764836448
2023-08-15 21:10:56
<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>
沒有預設值的必要參數應該放在前面。
這種函數宣告方式在PHP 8.0中已被棄用。像這樣編寫函數從來都沒有意義,因為在呼叫函數時,所有參數(直到最後一個必需參數)都需要指定。這也導致了混淆,因為使用
ReflectionFunctionAbstract
類別來分析函數和方法時會出現問題。新的棄用只是確保函數簽名遵循常識假設,即必需參數應該始終在可選參數之前聲明。
應該重寫函數以刪除先前參數的預設值。由於函數永遠不會在不聲明所有參數的情況下被調用,因此這對其功能不會產生任何影響。