Php Symfony2 RemovelListener找不到我的侦听器
删除动态创建的侦听器时遇到问题:Php Symfony2 RemovelListener找不到我的侦听器,php,symfony,events,Php,Symfony,Events,删除动态创建的侦听器时遇到问题: public function renderMyData($dataA, $dataB) { $key = $dataA->getKey(); $this->callables[$key] = function ($event) use ($dataA, $dataB) { $this->onTableRendered($dataA, $dataB, $event->getAProperty());)
public function renderMyData($dataA, $dataB)
{
$key = $dataA->getKey();
$this->callables[$key] = function ($event) use ($dataA, $dataB) {
$this->onTableRendered($dataA, $dataB, $event->getAProperty());)
};
$this->eventDispatcher->addListener(
Events::TABLE_RENDERED,
$this->callables[$key]
);
}
我这样做主要是因为我想在Events::TABLE_RENDERED
上抛出我自己的事件,并在其上添加$dataA
和$dataB
因为这个<代码> ReDyMyDATaS/<代码>可以用不同的值调用<代码> $DATA和<代码> $DATB<代码>,我希望监听器只对每个数据PAR调用一次,所以我在<代码> OnTabLeReNeNe/<代码>中所做的第一件事是注销我创建的可调用的.< /P>
public function onTableRendered($dataA, $dataB, $aProperty)
{
$key = $dataA->getKey();
$this->eventDispatcher->removeListener(
Events::TABLE_RENDERED,
$this->callables[$key]
);
// Create new event
$this->eventDispatcher->dispatch(
new MyNewEvent($dataA, $dataB, $aProperty)
);
}
但是,Symfony无法从其侦听器列表中删除my callable。我调试了symfony(使用v2.6.11),直到到达\symfony\Component\EventDispatcher\EventDispatcher
foreach ($this->listeners[$eventName] as $priority => $listeners) {
if (false !== ($key = array_search($listener, $listeners, true))) {
unset($this->listeners[$eventName][$priority][$key], $this->sorted[$eventName]);
}
}
我可以看到我的回调在$listeners
中,但是array\u search
返回false
我是否创建回调错误