在set_error_handler-ed函数中获取get_defined_vars()的最佳方法是使用debug_backtrace()函数。debug_backtrace()函数返回一个数组,其中包含当前执行点的函数调用堆栈信息。通过遍历这个数组,可以找到调用set_error_handler()函数的位置,并获取该位置的变量信息。
以下是一个示例代码:
function errorHandler($errno, $errstr, $errfile, $errline) {
$backtrace = debug_backtrace();
foreach ($backtrace as $trace) {
if (isset($trace['function']) && $trace['function'] == 'set_error_handler') {
$vars = $trace['args'][0];
break;
}
}
// 处理获取到的变量信息
// ...
}
set_error_handler('errorHandler');
// 其他代码...
在上述代码中,我们定义了一个名为errorHandler()的错误处理函数,并将其作为参数传递给set_error_handler()函数。在errorHandler()函数中,我们使用debug_backtrace()函数获取调用堆栈信息,并遍历堆栈数组,找到调用set_error_handler()函数的位置。然后,我们可以通过$trace['args'][0]获取到set_error_handler()函数中传递的第一个参数,即get_defined_vars()函数返回的变量信息。
请注意,debug_backtrace()函数会返回完整的调用堆栈信息,因此在实际使用时,可能需要根据具体情况进行适当的过滤和处理。
领取专属 10元无门槛券
手把手带您无忧上云