如何优雅地禁用PHP日志类
所以我有了这个日志(实际上是一个包装器),它可以通过如何优雅地禁用PHP日志类,php,Php,所以我有了这个日志(实际上是一个包装器),它可以通过Log::getInstance()->Log_this或->Log_this等在整个应用程序中访问。ini中有一个配置参数可以关闭日志记录,但禁用日志包装器的实现并不完全正确: private function __construct() { if(config::get('logging_enabled')) { $this->logger = new Log(); }
Log::getInstance()->Log_this
或->Log_this
等在整个应用程序中访问。ini中有一个配置参数可以关闭日志记录,但禁用日志包装器的实现并不完全正确:
private function __construct() {
if(config::get('logging_enabled')) {
$this->logger = new Log();
}
//else?
}
public static function getInstance() {
if(self::$_instance == NULL) {
self::$_instance = new LogWrapper();
}
return self::$_instance;
}
调用getInstance()->any_方法
委托给$logger实例,但将失败,因为$logger什么都不是
在这个类中,我在哪里可以停止这个流?这不是修改Log类的选项,我也不能遍历应用程序中对LogWrapper的每次调用。我似乎无法理解这一点,我知道一根巧妙的线就能解决它
谢谢你的帮助 为什么不实现一个不会记录任何内容的虚拟记录器类呢 然后,根据配置实例化
Log
或该虚拟无用类:
if(config::get('logging_enabled')) {
$this->logger = new Log();
}
else {
$this->logger = new DummyLogThatDoesntLog();
}
是的,这是一个选项,但我不想创建另一个类;如果你不想更改代码的其他部分,我认为你没有太多的选择。是的,应用程序期望有一个具有这些方法的对象——我希望有一些技巧来伪造它!如果要这样做,请确保两个类都实现了一个接口,这样类结构就不会出现分歧。