Слушатель Записи Доктрины никогда не увольнялся - PullRequest
3 голосов
/ 03 ноября 2011

Я пытаюсь создать один слушатель записи для всех моделей .

В 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 голосов
/ 04 ноября 2011

Да, вы делаете это неправильно.Глядя на API-документы, определить это нелегко.Соединение действительно имеет addRecordListener -метод, унаследованный от Doctrine_Configurable.Однако его нельзя использовать для добавления глобальных прослушивателей записей на уровне соединения.Вместо этого вы должны добавить его в Doctrine_Manager -экземпляр:

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

Справочную документацию о прослушивателях записи можно посмотреть здесь .

...