我正在处理涉及一些 PEAR 代码的异常处理,并且希望 (a) 编写我自己的错误处理程序并 (b) 传递更多的参数,而不仅仅是触发事件。或者,像这样:
...
$pear_thing->setErrorHandling(PEAR_ERROR_CALLBACK, 'my_handler', 'something else');
...
function my_handler($e, $other_arg) {
...
}
此代码不起作用(第二个参数永远不会传递给
my_handler
;有什么办法解决这个问题吗?
最佳答案
如果附加值是您在设置处理程序时将知道的,那么您可以执行 IEFE(立即执行函数表达式)
$handler = function ($otherArg) {
return function($e) use ($otherArg){
....
};
};
然后,当您绑定(bind)功能时,您可以执行此操作
$pear_thing->setErrorHandling(PEAR_ERROR_CALLBACK,$handler('something else'));
在这种情况下,$handler 是一个函数,它返回一个关闭传递给 $handler 的参数的闭包。
关于php - 我可以将其他参数传递给 PEAR_ERROR_CALLBACK 的处理程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17115480/