Использование Zend_Log в пользовательских классах - PullRequest
0 голосов
/ 17 марта 2011

Я использую Zend_Log и другие необходимые классы без MVC-фреймворка. Я хочу добавить возможности журналирования Zend (и другие модули в будущем) в мои пользовательские классы, и мне интересно, каков лучший подход для этого.

Сейчас у меня есть оболочка для Zend-регистратора, так что, по-видимому, я могу получить к ней доступ глобально:

My_log::log('Testing', Zend_Log::INFO);

Должен ли я добавлять этот код в каждый метод в моих классах, в который я хочу войти? Разве я не должен создавать журналы внутри моих классов? Есть ли более разумный способ?

Я ценю помощь, DC

1 Ответ

0 голосов
/ 27 мая 2011

Контейнер для инъекций зависимости кажется отличным решением, если ваше приложение может быть интегрировано. Все статические вызовы вызывают проблемы в среде тестирования.

посмотрите вокруг этого документа http://components.symfony -project.org / зависимость инъекции / багажник / книга / 04-Builder

В худшем случае я бы создал статический геттер, как My_Log::get()->error("message");, единственное, что теперь вы сможете легко исправить тестовую среду, чтобы get возвращал поддельный экземпляр. Все, что вам нужно для My_Log - это setLogger($logger), который заменит статический экземпляр на макет или что-то еще. В любом случае статические вызовы плохие: / если возможно, попытайтесь отделить классы, чтобы они зависели от как можно меньшего количества классов. Даже внедрение логгера вручную в конструктор вашего класса - лучшая идея. Если у вас есть плагин действия MVC или базовый контроллер может обеспечить ленивую загрузку getLogger(), чтобы ваш код мог выполнить $this->getLogger()->error('...');

искусство

...