搜索

首页  >  问答  >  正文

可选参数 $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粉236743689447 天前714

全部回复(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
  • 取消回复