处理PHP类时出错

处理PHP类时出错,php,class,error-handling,Php,Class,Error Handling,我正在尝试为php编写一个错误处理程序类。我已经测试过对象是否已经创建,但它似乎没有处理错误 我最初在索引文件中的函数中使用了相同的代码,它工作得很好,但我更希望有一个类。为什么这不处理错误 class class_error { public function __construct() { // set to the user defined error handler set_error_handler($this->errorHand

我正在尝试为php编写一个错误处理程序类。我已经测试过对象是否已经创建,但它似乎没有处理错误

我最初在索引文件中的函数中使用了相同的代码,它工作得很好,但我更希望有一个类。为什么这不处理错误

class class_error
{
    public function __construct()
    {
        // set to the user defined error handler
        set_error_handler($this->errorHandler());
    }

    public function errorHandler($errno, $errstr, $errfile, $errline)
    {
        //don't display error if no error number
        if (!(error_reporting() & $errno)) {
            return;
        }

        //display errors according to the error number
        switch ($errno)
        {
            case E_USER_ERROR:
                echo "<b>ERROR</b> [$errno] $errstr<br />\n";
                echo "  Fatal error on line $errline in file $errfile";
                echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
                echo "Aborting...<br />\n";
                exit(1);
                break;

            case E_USER_WARNING:
                echo "<b>WARNING</b> [$errno] $errstr<br />\n";
                break;

            case E_USER_NOTICE:
                echo "<b>NOTICE</b> [$errno] $errstr<br />\n";
                break;

            default:
                echo "<b>UNKNOWN ERROR</b> [$errno] $errstr<br />\n";
                break;
        }

        //don't execute PHP internal error handler
        return true;
    }
}
class\u错误
{
公共函数构造()
{
//设置为用户定义的错误处理程序
设置错误处理程序($this->errorHandler());
}
公共函数errorHandler($errno、$errstr、$errfile、$errline)
{
//如果没有错误号,则不显示错误
如果(!(错误报告()&$errno)){
返回;
}
//根据错误编号显示错误
交换机($errno)
{
案例E_用户_错误:
echo“ERROR[$errno]$errstr
\n”; echo“文件$errfile中的$errline行出现致命错误”; echo“.PHP”.PHP_VERSION.”(“.PHP_OS.”)
\n”; 回显“正在中止…
\n”; 出口(1); 打破 案例E_用户_警告: 回显“警告[$errno]$errstr
\n”; 打破 案例E_用户通知: echo“通知[$errno]$errstr
\n”; 打破 违约: echo“未知错误[$errno]$errstr
\n”; 打破 } //不执行PHP内部错误处理程序 返回true; } }
使用以下方法:

set_error_handler(array($this, "errorHandler"));

更多信息:

将其作为答案添加。是的,我会在几个记号后给你打个记号:)如果你的PHP是最新的,请使用短数组语法:
set\u error\u handler([$this,'errorHandler'])
。我甚至不知道这个存在。谢谢分享