PHP 如何使用自定义错误日志的静态功能

How to Use the Static function of Custom Error Logging in PHP

我有一个自定义的静态错误记录方法,如下所述 link http://www.bbminfo.com/Tutor/php_error_error_log.php 我执行了教程中提到的代码,得到了预期的输出。但现在我将错误处理方法移至 class 并将其设为静态。我遇到了一个问题,它不起作用

class ErrorHandling {

    /* Error Handling Function */
    public static function bbmNotice($errNo, $errStr, $errFile, $errLine) {
        $error_msg = "Custom PHP Notice : " . $errNo . "\n";
        $error_msg .= "Message : " . $errStr . "\n";
        $error_msg .= "Location : " . $errFile . "\n";
        $error_msg .= "Line Number : " . $errLine . "\n";

        /* Error Logging in General error_log File*/
        error_log($error_msg, 0);
    }

    /* Error Handler Fixing */
    set_error_handler("bbmNotice", E_USER_NOTICE);

}


/* Undefined Variable: $str */
if(isset($str)) {
    echo $str ;
} else {
    trigger_error("Variable 'str' is not defined, Kindly define the variable 'str' before usage.", E_USER_NOTICE);
} 

我收到以下错误

Parse error: syntax error, unexpected 'set_error_handler' (T_STRING), expecting function (T_FUNCTION) in /home2/bbminfon/public_html/error.php on line 17

请帮助我记录此设置中的错误。

发生解析错误是因为您正在尝试将函数注册为错误处理程序,但实际上想要注册一个 class 方法。

改为像这样注册错误处理程序:

class ErrorHandling 
{
    /* Error Handling Function */
    public static function bbmNotice($errNo, $errStr, $errFile, $errLine)
    {
        $error_msg = "Custom PHP Notice : " . $errNo . "\n";
        $error_msg .= "Message : " . $errStr . "\n";
        $error_msg .= "Location : " . $errFile . "\n";
        $error_msg .= "Line Number : " . $errLine . "\n";

        /* Error Logging in General error_log File*/
        error_log($error_msg, 0);
    }
}


set_error_handler("ErrorHandling::bbmNotice", E_USER_NOTICE);

参考: