问题描述
|
我正在使用Zend_Log和其他必需的类,而没有MVC框架。我想将Zend的日志记录功能(以及将来的其他模块)添加到自定义类中,我想知道这样做的最佳方法是什么。
现在,我有一个Zend记录器的包装器,因此,大概可以在全局访问它:
My_log::log(\'Testing\',Zend_Log::INFO);
是否应该将此代码添加到我要记录的类中的每个方法中?我不应该在班级内创建日志吗?有没有更聪明的方法?
感谢您的帮助,
直流电
解决方法
如果您的应用可以集成,则依赖注入容器似乎是一个很好的解决方案。所有静态调用都会在测试环境中引起问题。
看看这个文档
http://components.symfony-project.org/dependency-injection/trunk/book/04-Builder
最坏的情况是,我会创建一个类似于“ 1”的静态吸气剂,唯一的要点是,现在您将能够轻松修复测试环境,以使get返回一个伪造的实例。您所有的My_Log需求都是一个
setLogger($logger)
,它将用模拟或其他替换静态实例。无论如何,静态调用都是不好的:/如果可能的话,尝试去解耦类,这样它们就将依赖于尽可能少的类。甚至将logger手动注入到类构造函数中也是一个更好的主意。如果您具有MVC操作插件或基本控制器可以提供延迟加载getLogger()
,那么您的代码就可以完成$this->getLogger()->error(\'...\');
艺术