Doctrine Record Listener永远不会被解雇

时间:2011-11-03 18:44:16

标签: symfony1 doctrine symfony-1.4 doctrine-1.2

我正在尝试为所有模型创建一个记录侦听器

在ProjectConfiguration.class.php中,我添加了:

public function configureDoctrineConnection(Doctrine_Connection $connection)
{    
  $connection->addRecordListener(new doctrineLogger());    
}

我创建了lib / doctrineLogger.class.php

class doctrineLogger implements Doctrine_Overloadable
{
  public function __call($m, $a)
  {
    echo 'caught event '. $m .'<br />';
  }
}

但是没有发现任何事件。

当我尝试使用通用连接侦听器时:

$connection->addListener(new doctrineLogger());

...和相同的doctrineLogger类,我得到了正确的预期输出:

caught event preConnect
caught event preExec
caught event postExec
caught event postConnect
caught event prePrepare
caught event postPrepare
...

我做错了什么?我是否错误地实施了它?请帮忙,我很无能为力。我是第一次尝试使用Doctrine听众。

1 个答案:

答案 0 :(得分:0)

是的,你做错了。看看API-docs,虽然不容易发现。该连接确实具有addRecordListener - 方法,继承自Doctrine_Configurable。但是,它不能用于在连接级别添加全局记录侦听器。相反,您应该将其添加到Doctrine_Manager - 实例:

Doctrine_Manager::getInstance()->addRecordListener(new doctrineLogger());

您可以查看有关record listeners here的参考文档。