为什么 Zend\Log 会破坏跟随错误处理功能?
function error_handler($errno, $errstr, $errfile, $errline, $errcontext = null)
{
global $Logger;
$Logger->log(6 , "Error '$errstr' received.<br>");
return true;
}
$Logger = new \Zend\Log\Logger;
$Logger->addWriter(new \Zend\Log\Writer\Null);
set_error_handler('error_handler');
trigger_error('a', E_USER_ERROR);
trigger_error('b', E_USER_ERROR);
trigger_error('c', E_USER_ERROR);
trigger_error('d', E_USER_ERROR);
echo 'done.';
如果删除 $Logger->log() 行,脚本将按预期执行:
完毕。
保留脚本中的日志记录行在第二个 E_USER_ERROR 处终止。
致命错误:第 37 行 Z:\Workspace\xampp\htdocs\tests\error.php 中的 b
同样,如果您将错误级别更改为 E_USER_WARNING:
警告:第 37 行 Z:\Workspace\xampp\htdocs\tests\error.php 中的 b
警告:第 38 行 Z:\Workspace\xampp\htdocs\tests\error.php 中的 c
警告:第 39 行 Z:\Workspace\xampp\htdocs\tests\error.php 中的 d
完毕。