关闭时没有找到该类

时间:2016-08-15 09:07:26

标签: php class

这是我的ErrorHandler课程,我在调用Application的主ErrorHandler::init();课程中注册处理程序

我不明白为什么,但在ErrorResponseset_error_handler中找不到课程set_exception_handler

然而,课程在register_shutdown_function中找到......这很奇怪。

你能知道在其他处理程序中找不到ErrorResponse类的原因是什么?

<?php

namespace tools\exception;

use tools\core\http\ErrorResponse;

class ErrorHandler
{
    static public function init()
    {
        self::_registerNormalErrorHandler();
        self::_registerExceptionErrorHandler();
        self::_registerFatalErrorHandler();
    }

    static private function _registerNormalErrorHandler()
    {
        set_error_handler(function ($err_code, $err_message, $err_file, $err_line)
        {
                $responseCode = 500;
                ErrorResponse::create(
                    $responseCode,
                    $err_file,
                    $err_message,
                    $err_line,
                    "set_error_handler")->sendJSON();

                die();
        });
    }
    static private function _registerExceptionErrorHandler()
    {
        set_exception_handler(function ($exception)
        {
                $responseCode = $exception->getCode();
                if(0 === $responseCode)
                    $responseCode = 500;

                ErrorResponse::create(
                    $responseCode,
                    $exception->getFile(),
                    $exception->getMessage(),
                    $exception->getLine(),
                    "set_exception_handler")->sendJSON();

                die();
        });
    }
    static private function _registerFatalErrorHandler()
    {
        register_shutdown_function(function ()
        {
            $last_error = error_get_last();
            if( null !== $last_error ) {

                $isError = false;
                switch ($last_error["type"]) {
                    // ...
                }
                if($isError) {
                    ErrorResponse::create(
                        500,
                        $last_error['file'],
                        $last_error['message'],
                        $last_error['line'],
                        $caught)->sendJSON();
                }
            }
        });
    }
}

0 个答案:

没有答案