[php] 错误接管类

Posted LeePC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[php] 错误接管类相关的知识,希望对你有一定的参考价值。

自己弄的一个错误接管类:

<?php

//----------------------------------
// Leephp 错误接管类
// 2017-07-06
// PengchongLee
//----------------------------------

 // error_reporting — 设置应该报告何种 PHP 错误
 error_reporting(0);
 
class Erro
{
    public function __construct()
    {
        $this->iserr();
    }
    public function iserr()
    {    
        // set_exception_handler — 设置用户自定义的异常处理函数 
        set_exception_handler([$this,‘ex‘]);

        // set_error_handler — 设置用户自定义的错误处理函数
        set_error_handler([$this,‘err‘]);

        // register_shutdown_function — 注册一个会在php中止时执行的函数
        register_shutdown_function( [ $this,‘last_error‘ ]);
    }

    // 异常接管
    public function ex($ex)
    {
        // 获取错误异常信息
        $message = $ex->getMessage();
        // 获取错误异常代码
        $code    = $ex->getCode();
        // 获取错误异常文件
        $file    = $ex->getFile();
        // 获取错误异常文件行数
        $line    = $ex->getLine();
    }

    // 错误接管
    public function err( $code, $message,$file ,$line )
    {
        // 记录日志
        $this->errlog( $code, $message,$file ,$line );
    }

    // 脚本结束前获取最后错误
    public function last_error()
    {
        // error_get_last — 获取最后发生的错误
        $last = error_get_last();
        $this->errlog( $last[‘type‘],$last[‘message‘],$last[‘file‘],$last[‘line‘] );
    }

    // 错误信息收集并记录 (参数传输的顺序不一样,参数还不一样)
    public function errlog( $code, $message,$file ,$line )
    {
        // 拼接错误信息
        $errstr  =  date(‘Y-m-d h:i:s‘)."\r\n";
        $errstr .= ‘  错误级别:‘.$code."\r\n";
        $errstr .= ‘  错误信息:‘.$message."\r\n";
        $errstr .= ‘  错误文件:‘.$file."\r\n";
        $errstr .= ‘  错误行数:‘.$line."\r\n";
        $errstr .= "\r\n";

        // error_log — 发送错误信息到某个地方
        error_log($errstr,3,__DIR__.‘/error.log‘);
    }

}

 

以上是关于[php] 错误接管类的主要内容,如果未能解决你的问题,请参考以下文章

代码片段 PHP,预期文件结尾,我错在哪里?

laravel5.6 laravel 接口 接管 自定义异常类

PHP代码-psysh调试代码片段工具

Thinkphp5.0之异常处理

框架布局接管屏幕并隐藏底部导航和工具栏

如何通过单击片段内的线性布局从片段类开始新活动?下面是我的代码,但这不起作用