2011-11-03 60 views
3

我正在尝试为所有模型创建一个记录听众学说记录听众从未解雇

在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听众。

回答

0

是的,你做错了。看看API文档,虽然不容易发现。连接确实有一个addRecordListener-方法,从Doctrine_Configurable继承。但是,它不适用于在连接级别添加全局记录侦听器。相反,你应该把它添加到Doctrine_Manager -instance:

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

你可以看一下参考文献约record listeners here

+0

感谢您的回答,但它不起作用。不用找了。再看一遍文档,实际上它应该可以添加记录侦听器到连接(将侦听器连接到连接非常简单:$ conn-> addRecordListener(new Debugger());)。无论是连接还是经理,对我无关紧要。奇怪的是,这不是行不通的。 –