我对 PHP 很陌生,所以这可能是一个愚蠢的问题。我目前正在尝试为我的应用程序构建日志记录功能,并且我希望我使用的记录器只被实例化一次以使整个事情更快(即,而不是为我进行的每个日志调用实例化一个新的记录器) . 我已经阅读了 Php 中的 Singletons 是如何糟糕的,并且由于静态的东西更容易使用并获得更好的基准,我基本上可以将类设为静态。这是我当前的代码:
use Fluent\Logger\FluentLogger;
class Logger
{
private static $_fluentLogger;
private static $_initialized;
public static function getLogger()
{
if (!isset(self::$_initialized))
{
Fluent\Autoloader::register();
self::$_fluentLogger = new FluentLogger("localhost","34567");
self::$_initialized = true;
self::$_fluentLogger->post("debug.test",array("initializing"=>"true"));
}
return self::$_fluentLogger;
}
}
然后调用这个东西,我这样做:
$logger = Logger::getLogger();
self::$_fluentLogger->post("debug.test",array("real_post"=>"true"));
我的问题是,每次我通过执行上述操作调用要发布的内容时,我都可以看到它还写出“initializing”=>“true”消息(即每次都重新初始化记录器)。我究竟做错了什么?