PHP - 将一个额外的参数(变量)传递给set_exception_handler

时间:2012-03-05 22:00:46

标签: php variables exception-handling callback closures

有没有办法将变量传递给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
    }
}

3 个答案:

答案 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);
}