在 file1.php 中:
set_error_handler('my_error_handler');
set_exception_handler('my_exception_handler');
function my_error_handler($errNo, $errStr, $errFile, $errLine, $whatever = null){
// here ErrFile and $errLine are correct only for native funcs...
throw New ErrorException($errStr, 0, $errNo, $errFile, $errLine);
}
function my_exception_handler($exception){
print $exception->getLine(); // correct only for native functions
print $exception->getFile(); // correct only for native functions
}
在 file2.php 中,一个示例函数定义:
function foo($requiredArg){
}
在 file3.php 中,调用 foo:
foo();
产生:
foo() 缺少参数 1,在第 2 行的 file3.php 中调用并定义...
消息是正确的,但是当我尝试获取文件并使用$exception->getFile()
and $exception->getLine()
(在我的异常处理程序中)时,我得到了定义 foo() 的文件和行,而不是调用它的位置...
但是使用原生 PHP 函数,我得到了调用函数的文件和行(这就是我想要的)。