如何检索当前错误处理程序?

php
2022-08-30 19:02:33

我想找出错误处理程序当前正在处理错误的内容。

我知道set_error_handler()将返回以前的错误处理程序,但是有没有办法在不设置新错误处理程序的情况下找出当前的错误处理程序是什么?


答案 1

尽管PHP中缺少函数,但您可以使用一些技巧来检索当前的错误处理程序,尽管您可能无法对该信息执行太多操作,具体取决于它的值。尽管如此:get_error_handler()set_error_handler()

set_error_handler($handler = set_error_handler('var_dump'));
// Set the handler back to itself immediately after capturing it.

var_dump($handler); // NULL | string | array(2) | Closure

看,妈妈,这是幂等的!


答案 2

是的,有一种方法可以在不设置新错误处理程序的情况下找出错误处理程序。这不是一步原生 php 函数。但它的效果正是你需要的。

总结@aurbano的所有建议,@AL X,@Jesse和@Dominic108替换方法可以看起来像这样

function get_error_handler(){
    $handler = set_error_handler(function(){});
    restore_error_handler();
    return $handler;
}

推荐