PHP - передать дополнительный параметр (переменную) в set_exception_handler - PullRequest
4 голосов
/ 06 марта 2012

Есть ли способ передать переменную в метод set_exception_handler () в PHP?Мне нужно что-то вроде этого:

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 ]

8 голосов
/ 06 марта 2012

Как я уже указывал в комментарии, вы все равно должны использовать лямбда-функции:

 $lambda = function($exception) use ($var) {
    Clazz::callback($exception,$var);
 }

 set_exception_handler($lambda);
2 голосов
/ 26 февраля 2016

Использовать обратный вызов

set_exception_handler(function($exception) use($var){
    $that->callback($exception, $var);
});
1 голос
/ 06 марта 2012

Одна из возможностей - перехватить исключение и повторно сгенерировать производное, имеющее это пользовательское свойство.

class MyLibraryException extends LibraryException {
    function __construct(LibraryException $e, $custom_field){
         $this->custom_field = $custom_field;
         ...
    }
}

try {
    ...
} catch(LibraryException $e) {
    new MyLibraryException($e, $cusotm_field);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...