首頁  >  問答  >  主體

可選參數 $yyy 位於必需參數 $xxx 之前

Deprecated: Required parameter $xxx follows optional parameter $yyy in...

自從升級到 PHP 8.0 後,執行以下程式碼時會拋出此錯誤:

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

這在過去版本的 PHP 中沒有問題。

P粉236743689P粉236743689341 天前643

全部回覆(2)我來回復

  • P粉021553460

    P粉0215534602023-10-19 10:29:39

    沒有預設值的必要參數應該放在第一位。

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

    回覆
    0
  • P粉427877676

    P粉4278776762023-10-19 00:33:30

    這種函數宣告方式在 PHP 8.0 中已被棄用。像這樣編寫函數從來沒有意義,因為所有參數(直到最後一個)必需的一個)需要在呼叫函數時指定。它也正在使用 造成混亂 ::getNumberOfRequiredParameters" rel="noreferrer">ReflectionFunctionAbstract 類別來分析函數和方法。

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

    應該會重寫該函數以刪除早期參數的預設值。由於在不聲明所有參數的情況下永遠無法呼叫該函數,因此這對其功能應該沒有影響。

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

    回覆
    0
  • 取消回覆