【发布时间】:2019-09-23 16:02:14
【问题描述】:
如何覆盖 Slim 的第 2 版默认错误处理?我不希望我的应用程序在每次收到警告消息时崩溃。基本上我想从 \Slim\Slim 类中覆盖函数 handleErrors()。
我研究了如何覆盖此行为,但因为它被称为:
set_error_handler(array('\Slim\Slim', 'handleErrors')); 在 Sim 的 run() 方法中,我必须自己编辑 Slim 源代码。我将上面的内容更改为:set_error_handler(array(get_class($this), 'handleErrors')); 然后我用不同的行为扩展了 Slim 的 handleErrors() 并实例化了我的自定义类而不是 Slim。它工作正常但我不想触及 Slim 的核心课程。
代码仅供参考
public static function handleErrors($errno, $errstr = '', $errfile = '', $errline = '')
{
if (error_reporting() & $errno) {
//Custom Block start here
$search = 'Use of undefined constant';
if(preg_match("/{$search}/i", $errstr)) {
return true; //If undefined constant warning came will not throw exception
}
//Custom Block stop here
throw new \ErrorException($errstr, $errno, 0, $errfile, $errline);
}
return true;
}
请帮忙改写handleErrors()的正确方法
【问题讨论】:
-
这应该是一个配置设置,设置dev和prod的错误级别等等
-
我不希望 Slim::handleErrors() 在出现特定警告时抛出异常。
-
你也可以使用 php ini 设置来委托错误/警告显示,但我认为 Slim 应该已经有这个东西的配置参数
-
@NikosM。我了解通过不同方式抑制错误和警告的方法。但在我的情况下,我不想抑制所有我想在未定义常量等情况下抑制的警告。我将检查 Slim::handleErrors() 然后抛出异常。