1

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

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

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

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

4

1 回答 1

1

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

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

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

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

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

于 2013-06-14T19:37:16.200 回答