首页 >后端开发 >php教程 >PHP 8.0:为什么必需参数现在需要位于可选参数之前?

PHP 8.0:为什么必需参数现在需要位于可选参数之前?

DDD
DDD原创
2025-01-01 01:03:10819浏览

PHP 8.0: Why Do Required Parameters Now Need to Precede Optional Ones?

PHP 8.0:必需参数跟随可选参数

升级到 PHP 8.0 后,开发者可能会遇到以下错误:

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

当函数的声明包含可选参数后跟必需参数时,就会出现此错误。例如,以下代码将触发错误:

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

澄清功能含义

在 8.0 之前的 PHP 版本中,允许此类函数声明。然而,他们在使用 ReflectionFunctionAbstract 类分析函数和方法时引入了不一致和混乱。

新要求

PHP 8.0 通过要求所有必需的内容强制执行更符合逻辑的方法参数必须在任何可选参数之前声明。

推荐解决方案

要解决该错误,只需从可选参数中删除默认值即可。由于无论如何在不指定所有参数的情况下都无法调用该函数,因此功能应该不受影响:

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

以上是PHP 8.0:为什么必需参数现在需要位于可选参数之前?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn