2011-11-03 67 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());)。無論是連接還是經理,對我無關緊要。奇怪的是,這不是行不通的。 –