error_reporting(-1);
set_error_handler(function ($level, $message, $file = '', $line = 0) {
echo '1--------------NOTICE or WARNING';
});
set_error_handler(function ($level, $message, $file = '', $line = 0) {
echo '2--------------NOTICE or WARNING';
set_error_handler(function($level, $message, $file = '', $line = 0) {
echo '3--------Handler';
});
restore_error_handler();
});
$arr = [];
var_dump($arr["a"]);
var_dump($arr["b"]);
输出:
2--------------NOTICE or WARNINGNULL
1--------------NOTICE or WARNINGNULL
phpversion:7.0.10
作为上面的输出,似乎处理程序中的restore_error_handler
不像往常一样工作。
我希望error_handler
转到2,但error_handler
会回到1.
答案 0 :(得分:0)
这很奇怪,但它似乎不适用于回调函数。我不知道为什么。不过,这仍然有效:
function foo1() {echo "<br>1<br>";}
function foo2() {echo "<br>2<br>"; restore_error_handler();}
function foo3() {echo "<br>3<br>"; restore_error_handler();}
set_error_handler("foo1"); //current error handler: foo1
set_error_handler("foo2"); //current error handler: foo2
set_error_handler("foo3"); //current error handler: foo3
$arr = [];
var_dump($arr["a"]);
var_dump($arr["b"]);
var_dump($arr["c"]);
显示:
3
NULL
2
NULL
1
NULL