Ведение журнала из слоя модели Symfony - PullRequest
2 голосов
/ 04 апреля 2010

В настоящее время я работаю над проектом с Symfony 1.4 и Doctrine 1.2.Я ищу правильный способ ведения журнала со слоя модели.

В некоторых модельных классах я использую ловушку записи postSave () для создания ZIP-файла с использованием exec () (так как PHP zip не делаетпредоставить для хранения метод «Хранится»).Чтобы убедиться, что все работает нормально, я проверяю код возврата и регистрирую ошибку, если что-то идет не так.Мой первый наивный подход состоял в том, чтобы сделать это следующим образом:

if ($returnCode != 0) {
  sfContext::getInstance()->getLogger()->debug(...);
}

Как вы знаете, это не очень хорошо работает, потому что sfContext принадлежит к уровню контроллера и не должен использоваться на уровне модели.Моя следующая попытка состояла в том, чтобы использовать конструктор модели для передачи экземпляра sfLogger, но это не работает из-за того, что Doctrine 1.2 резервирует конструктор для внутреннего использования ( Документация Doctrine 1.2 ).

Я с нетерпением жду ваших предложений!

1 Ответ

1 голос
/ 04 апреля 2010

Вы можете добавить метод setLogger () к вашей функции, который получает экземпляр логгера в параметре и устанавливает его во внутреннюю переменную, такую ​​как $ this-> logger. Позже, когда вам нужно что-то зарегистрировать, сделайте это как if ($this->logger) { $this->logger->debug(...); }.

...