必需参数$xxx跟随可选参数$yyy

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

自从升级到 PHP 8.0 后,在运行这样的代码时会抛出这个错误:

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

这在过去的 PHP 版本中没有问题。

回答

这种风格的函数声明在 PHP 8.0 中已被弃用。编写这样的函数从来没有意义,因为在调用函数时需要指定所有参数(直到最后一个必需的参数)。它也引起了使用类的混淆ReflectionFunctionAbstract来分析函数和方法时出现。

新的弃用只是确保函数签名遵循常识假设,即必须出现的必需参数应始终在可选参数之前声明。

应该重写该函数以删除早期参数的默认值。由于在不声明所有参数的情况下永远无法调用该函数,因此这应该不会对其功能产生影响。

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

  • "since all parameters (up to the last required one) would need to be specified when the function was called" . I disagree https://3v4l.org/Nb6i6 😉
  • Very impressive nitpicking!

以上是必需参数$xxx跟随可选参数$yyy的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>