【发布时间】:2022-07-28 07:34:36
【问题描述】:
PHP 8.0 引入了许多可能破坏现有代码的更改。例如,count() 现在在给定 null 参数时会引发异常,而不是返回布尔值。 Backward Incompatible Changes 文档中未提及此更改。是否有工具或方法可以系统地分析现有 PHP 代码库,以标记升级到 PHP 8 引擎导致的潜在重大变化?
【问题讨论】:
-
php.watch/versions/8.0 很有用,并特别提到了这个变化 - php.watch/versions/8.0#error-handling。
-
为了避免异常我使用 count($data ?? '');因此,如果失败,它将抑制为 null。比较 php8 与 php7。 php 8 在性能上获胜。
-
该特定函数已针对 null 抛出警告 since 7.2,并且从未返回布尔值。但我同意我在文档中找不到提到警告被提升为 TypeError 的内容。有 an attempt at an RFC 以减少对以前使用 null 的函数的影响,但
count不是目标。不幸的是,修复是静态分析和观察日志。