🌚

接管PHP致命错误的方法

Posted at — Nov 12, 2014
#编程 #PHP

Yii 2.0引入了一项新特性,可以接管PHP的致命错误。在此之前,如果PHP源码有语法错误,框架本身是不会处理的。

实现的思路如下:

代码如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
<?php

// ...

ini_set('display_errors', false);
register_shutdown_function(function(){
    $error = error_get_last();
    if (isset($error['type']) && in_array($error['type'], [E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING])) {
        ob_clean();
        echo '<pre>'; var_dump($error); echo '</pre>';
        exit(1);
    }
});

// ...

?>