gpt4 book ai didi

抑制严格标准消息的 PHP 机制

转载 作者:搜寻专家 更新时间:2023-10-31 22:14:33 31 4
gpt4 key购买 nike

我们正在开发针对 5.2 开发的 PHP 应用程序,但我们最近迁移到了 PHP 5.3。我们没有时间去解决所有迁移到 PHP 5.3 的问题。具体来说,我们有很多消息:

Declaration of Object::Function should be compatible with that of Parent::function

我们可以随着时间的推移修复这些问题,但这需要数周时间。同时我们可以设置:

error_reporting = E_ALL & ~E_STRICT

但是这是为整个脚本全局设置的。我们希望继续获取我们编写的新代码的 E_STRICT 消息。是否可以仅指示应忽略 E_STRICT 消息的功能?我正在考虑类似于 Java 的 @SuppressWarnings 注释的东西。

最佳答案

不幸的是,php 的@ 抑制器只适用于表达式而不是类定义。您的具体示例似乎也与 bug 有关,现在标记为假的。不过我认为这是一个错误,但我认为警告实际上应该显示更多

不过,您可以做的是在整个脚本中多次更改 error_reporting 级别,假设您的新代码很容易与旧代码分开。如果您使用相同的类,尽管这会变得更加困难。

不过,您可以使用错误处理程序来过滤一些您不想报告的函数和方法:

set_error_handler('GOON', E_STRICT);
function GOON($errno, $errstr) {
if (is_strict_function($errstr)) {
echo "$errstr\n";
}
}
function is_strict_function($str) {
foreach (
array(
'xzin::goon'
//Other functions or methods go here
)
as $fnc
) {
if (strpos($str, $fnc) !== false) {
return false;
}
}
return true;
}

error_reporting(E_ALL | E_STRICT);

class xzin extends zin {
function goon($a) {}
}
class tzin extends zin {
function goon($a) {}
}
class zin {
function goon() {}
}

打印:“tzin::goon() 的声明应该与 zin::goon() 的声明兼容”。

关于抑制严格标准消息的 PHP 机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8222034/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com