在我的模块的onBootstrap
函数中,我附加了一个挂钩到dispatch.error
事件的匿名函数(用于记录目的):
$eventManager->attach('dispatch.error', function($e) {
//Code here
});
我现在正在设置单元测试,并且不希望日志功能在测试请求上运行。
如何从事件管理器中删除此匿名函数?
附
[剪断]
该方法返回Zend \ Stdlib \ CallbackHandler的一个实例;这个 如果需要,稍后可以将值传递给detach()。
和
分离
[剪断]
扫描所有侦听器,并分离任何与$ listener匹配的侦听器,以便不再触发它们。
因此我将attach
改为:
$logCallBack = $eventManager->attach('...
我要将回调保存到什么内容,以便我可以在单元测试中将其删除?
$this->getApplication()->getEventManager()->detach(???);
答案 0 :(得分:1)
分配返回的处理程序,稍后使用它将其分离
$callBackHandler = $eventManager->attach('dispatch.error', function($e) {
//Code here
});
$eventManager->detach($callBackHandler);`
答案 1 :(得分:1)
我已添加到$_SERVER
全局变量的回调:
$logCallBack = $eventManager->attach(['dispatch.error', 'render.error'], function($e) {
//...
}
$_SERVER['logCallBack'] = $logCallBack;
然后我要取消注册它们:
$callBacks = $_SERVER['logCallBack'];
if(!is_array($callBacks)) {
$callBacks = [$callBacks];
}
foreach($callBacks as $callback) {
$this->getApplication()->getEventManager()->detach($callback);
}