有没有办法将变量传递给PHP中的set_exception_handler()方法?我需要这样的东西:
class Clazz {
public /* static */ function foo() {
set_exception_handler(array('Clazz', 'callback'), $var); // I need to pass $var
// or this in non-static context
$that = $this;
set_exception_handler(array($that, 'callback'), $var); // I need to pass $var
}
public static function callback($exception, $var) {
// process $exception using $var
}
}
答案 0 :(得分:8)
正如我已经在评论中指出的那样,你必须使用lambda函数:
$lambda = function($exception) use ($var) {
Clazz::callback($exception,$var);
}
set_exception_handler($lambda);
答案 1 :(得分:2)
使用回调
set_exception_handler(function($exception) use($var){
$that->callback($exception, $var);
});
答案 2 :(得分:1)
一种可能性是捕获异常并重新抛出具有此自定义属性的派生异常。
class MyLibraryException extends LibraryException {
function __construct(LibraryException $e, $custom_field){
$this->custom_field = $custom_field;
...
}
}
try {
...
} catch(LibraryException $e) {
new MyLibraryException($e, $cusotm_field);
}