我可以将其他参数传递给PEAR_ERROR_CALLBACK的处理程序吗?

时间:2013-06-14 18:58:36

标签: php error-handling pear

我正在进行涉及一些PEAR代码的异常处理,并希望(a)编写我自己的错误处理程序,并且(b)传递更多的参数而不仅仅是触发事件。或者,像这样:

...
$pear_thing->setErrorHandling(PEAR_ERROR_CALLBACK, 'my_handler', 'something else');
...

function my_handler($e, $other_arg) {
     ...
}

此代码不起作用(第二个参数永远不会传递给my_handler;有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

如果附加值是您在设置处理程序时知道的内容,那么您可以执行IEFE(立即执行的函数表达式)

$handler = function ($otherArg) {
          return function($e) use ($otherArg){
              ....
          };
};

然后当您绑定该功能时,您可以执行此操作

$pear_thing->setErrorHandling(PEAR_ERROR_CALLBACK,$handler('something else')); 

在这种情况下,$ handler是一个函数,它返回一个闭包,该闭包围绕传递给$ handler的参数。