1
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"]);
输出:PHP restore_error_handler不能按预期
2--------------NOTICE or WARNINGNULL
1--------------NOTICE or WARNINGNULL
phpversion:7.0.10
如上的输出,它似乎restore_error_handler
在处理程序不会像往常一样工作。
我希望error_handler
去2,但error_handler
回到1
如果您向foo3添加了'set_error_handler'。像'function foo3(){echo“”; set_error_handler(function(){echo'XXX';}); restore_error_handler();}'你会得到'3 2'的输出。这和我问题中的问题是一样的。 - ( – apeipo