我正在进行涉及一些PEAR代码的异常处理,并希望(a)编写我自己的错误处理程序,并且(b)传递更多的参数而不仅仅是触发事件。或者,像这样:
...
$pear_thing->setErrorHandling(PEAR_ERROR_CALLBACK, 'my_handler', 'something else');
...
function my_handler($e, $other_arg) {
...
}
此代码不起作用(第二个参数永远不会传递给my_handler
;有什么方法可以解决这个问题吗?
答案 0 :(得分:1)
如果附加值是您在设置处理程序时知道的内容,那么您可以执行IEFE(立即执行的函数表达式)
$handler = function ($otherArg) {
return function($e) use ($otherArg){
....
};
};
然后当您绑定该功能时,您可以执行此操作
$pear_thing->setErrorHandling(PEAR_ERROR_CALLBACK,$handler('something else'));
在这种情况下,$ handler是一个函数,它返回一个闭包,该闭包围绕传递给$ handler的参数。