是否有一个全面的内置PHP函数列表,将抛出TypeError异常自PHP 8.0?



我一直在将一些过时的PHP代码迁移到PHP 8.1,并注意到从PHP 8.0开始,某些内置函数现在会抛出TypeError异常,而不是仅仅在传递的参数输入不正确时发出警告。看到这里。

我很困惑,因为我似乎找不到对这一变化的全面描述。我运行的代码检查工具也没有捕捉到它,但我也不能责怪它们,因为这很可能是一个运行时问题。一些消息来源报告说,所有内置函数都被提升为抛出typeerror,而另一些消息来源说,只有一些函数受到影响。我已经通过一般的PHP变更日志搜索了此更改,并且只能找到两个受影响的函数,即array_column()和count(),后者恰好使我意识到我正在迁移的代码库中的这个问题。这是否意味着只有这两个功能受到变化的影响?

如果有人能对此提供一些澄清,我将非常感激。

此更改由RFC https://wiki.php.net/rfc/consistent_type_errors完成。

所有更改都在这里https://github.com/php/php-src/pull/3794/files

你可以在上面的PR上写一个解析器来获取函数列表。

许多函数与/equal 8.0版本相比发生了变化。主要是从一些简单的函数中,删除了支持null的参数。例如,在中,str_replace,preg_replace第二个参数不能为NULL值了。要迁移上一个PHP版本,您可以查看PHP版本的一致性,并从这里查看弃用情况。

PHP版本8https://www.php.net/manual/en/migration80.incompatible.php

你可以看到所有新的列表附录https://www.php.net/manual/en/appendices.php

完全正确,关于你的error (count()函数)你可以从这里阅读:https://github.com/aisingapore/TagUI/issues/1137

关于上个版本特定的PHP类型错误,你可以阅读:https://php.watch/versions/8.0/internal-function-exceptions

这里有一些迁移信息:

5.6做7.0 https://www.php.net/manual/en/migration70.php

7.3做7.4https://www.php.net/manual/en/migration74.php

7.4做8.0 https://www.php.net/manual/en/migration80.php

最新更新