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();
生成:
2行目のfile3.phpで呼び出され、定義されたfoo()の引数1がありません...
メッセージは正しいですが、 (例外ハンドラーで) $exception->getFile()
andを使用してファイルと行を取得しようとする$exception->getLine()
と、呼び出された場所ではなく、foo()が定義されたファイルと行を取得します...
しかし、ネイティブPHP関数を使用すると、関数が呼び出されたファイルと行を取得できます(これが私が望むものです)。