必需参数$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!