我正在尝试为所有模型创建一个记录监听器。
在 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 监听器。
最佳答案
是的,你做错了。看看 API 文档,发现这一点并不容易。该连接确实有一个从 Doctrine_Configurable
继承的 addRecordListener
方法。但是,它不能用于在连接级别添加全局记录监听器。相反,您应该将其添加到 Doctrine_Manager
实例中:
Doctrine_Manager::getInstance()->addRecordListener(new doctrineLogger());
可以查看record listeners here的引用文档.
关于symfony1 - Doctrine 记录监听器从未被解雇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8000240/