PHP 8.4: E_STRICT 常量弃用
PHP中的所有错误、警告和通知都有一个错误级别,使用 error_reporting
和 set_error_handler
函数,PHP 应用可以控制报告哪些错误,并用自定义回调覆盖默认的错误处理行为。
PHP 有各种各样的错误级别,E_ALL
常量是所有 E_
常量的位掩码 OR,这意味着设置错误报告或错误处理程序来报告/处理所有错误、警告和通知。
PHP 之前发出的错误级别之一是 E_STRICT
,针对的代码不是“严格”正确的,以确保互操作性和前向兼容性。PHP 7.0 将大多数现有的 E_STRICT
警告转换为 E_NOTICE
,自 PHP 8.0 以来,所有 E_STRICT
通知都更改为 E_NOTICE
。
由于自 PHP 8.0 以来,所有 E_STRICT
通知都升级为 E_NOTICE
,因此 PHP 8.5 弃用了 E_STRICT
常量。
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
Constant E_STRICT is deprecated
替换建议
PHP 8.0 及更高版本之后的 PHP 核心和核心扩展根本不会发出 E_STRICT
通知。可以安全地假设,在 PHP 8.0 及更高版本上运行的任何 PHP 应用都永远不会遇到 E_STRICT
通知,并且可以安全地更新错误报告和处理以忽略 E_STRICT
通知。
- error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
+ error_reporting(E_ALL & ~E_DEPRECATED);
PHP 7.4 之前的 PHP 7 版本,下列函数会条件性地发出 E_STRICT
通知:
htmlentities
mysqli_next_result
mysqli_stmt_next_result
必须支持 PHP 7.3 或更早版本的 PHP 应用可以有条件地调用具有适当错误级别的 error_reporting
和 set_error_handler
函数:
- error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
+ if (PHP_VERSION_ID >= 70400) {
+ error_reporting(E_ALL & ~E_DEPRECATED);
+ }
+ else {
+ error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
+ }
E_ALL
常量值改变
PHP 8.4 中赋值给 E_ALL
常量的值从 32767
改为 30719
。
向后兼容性影响
E_STRICT
常量在 PHP 8.4 中已弃用。现在,在 PHP 8.4 及更高版本中,代码中的任何地方使用该常量都会发出弃用通知。
E_STRICT
常量将在 PHP 9.0 中被移除。
选择性排除 E_STRICT
通知的自定义错误处理程序和错误报告控件可以将其调整为忽略 E_STRCT
通知,以避免弃用通知。