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

标签 php php-5.3 error-reporting

我们正在开发针对 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/

相关文章:

php - 为什么当我遍历这个数组两次时 PHP 会覆盖值(通过引用,通过值)

php - 有没有一种简单的方法可以在 php 5.3 中模拟友谊

PHP 在尝试使用 PDO 连接到错误的数据库时不显示错误

php - 上传 CSV 并用外键替换数据

php - 无法在查询中设置限制值

php - 如何获取数据库字段+ mysql中的realesacpe值

php - 什么是\u0026#39;n,我该如何解码?

php - Laravel 4 表单生成器自定义字段宏

php 错误报告澄清(确切的方法、语法和位置)

PHP 5.4 : disable warning "Creating default object from empty value"