2011-11-03 3 views
3

모든 모델에 대해 하나의 레코드 청취자 인 을 만들려고합니다.Doctrine Record Listener never fired

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 />'; 
    } 
} 

을 생성하지만 어떤 이벤트가 이제까지 묻어 있지 :

는 ProjectConfiguration.class.php에서 나는 덧붙였다. 나는이와 일반 연결 청취자 시도

: 제대로

$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-docs를 살펴보면 쉽게 발견 할 수 없습니다. 연결은 Doctrine_Configurable에서 상속 된 addRecordListener -method를 실제로 가지고 있습니다. 그러나 연결 수준에서 전역 레코드 수신기를 추가하는 데는 사용할 수 없습니다. 대신 Doctrine_Manager -instance에 추가해야합니다

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

당신은 참조 설명서에 대한 record listeners here 볼 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 작동하지 않습니다. 변경 없음. 한 번 더 문서를보고 있으면 실제로 레코드에 리스너를 추가 할 수 있어야합니다 (연결에 리스너를 연결하는 것은 $ conn-> addRecordListener (new Debugger());)만큼 쉽습니다. 그것은 연결 또는 관리자에 상관없이 나에게 중요하지 않습니다. 이상하게도 그것은 어느쪽으로도 작동하지 않습니다. –