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