搜尋

首頁  >  問答  >  主體

$yyy之後的可選參數$xxx是必要的

<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粉764836448P粉764836448507 天前644

全部回覆(2)我來回復

  • P粉616383625

    P粉6163836252023-08-16 14:16:18

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

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

    回覆
    0
  • P粉451614834

    P粉4516148342023-08-16 09:03:20

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

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

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

    function test_function(int $var1, int $var2) {
        return $var1 / $var2;
    }
    

    回覆
    0
  • 取消回覆