PHP 禁用单行弃用警告

问题描述 投票:0回答:3

我目前已为我的网站启用了所有错误:

error_reporting(E_ALL);

但是,在 PHP 8.1 中,一些函数现已弃用:

PHP Notice: Function date_sunset() is deprecated in index.php on line 14

由于当前的要求,我无法将该行更新为未弃用的替代方案。

有没有办法仅针对这一行禁用弃用错误报告?

php deprecated deprecation-warning php-8 php-8.1
3个回答
3
投票

作为解决方法,您可以像这样包装已弃用的行:

error_reporting(E_ALL & ~E_DEPRECATED);
// call_deprecated_function_here()
error_reporting(E_ALL);

或者,如果您想简单地切换已弃用的标志,请使用以下命令:

error_reporting(error_reporting() ^ E_DEPRECATED); // toggle E_DEPRECATED (off)
// call_deprecated_function_here()
error_reporting(error_reporting() ^ E_DEPRECATED); // toggle E_DEPRECATED (back on)

1
投票

从 PHP 8 开始,您可以在已弃用的函数前面添加 @

使用
@
 可以抑制 PHP 错误消息,否则此时会抛出这些错误消息;或者,更准确地说,
引用文档的第一条评论

错误处理程序仍会被调用,但调用时错误级别为 0

例如


@functionName(...)


    


0
投票
建议的解决方法只有在该功能被删除之前才有效,那么每当该功能被删除时它只会在某个时候致命,无论如何强制更改都会迫在眉睫。

为什么不尝试使用 PHP 自己的 API 建议的内容?:

强烈建议不要依赖此功能。请改用 date_sun_info() 。

参见

date_sun_info() ...不过参数较少,具体取决于您之前使用 date_sunset() 的内容。

© www.soinside.com 2019 - 2024. All rights reserved.