我对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"));
我的问题是,每当我通过上述方式调用要发布的内容时,我都可以看到它还写出“初始化”=>“真实”消息(即每次重新初始化记录器)。我做错了什么?