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

我是否创建回调错误