Php Static Class在每次使用时都会不断重新初始化

时间:2012-09-07 20:25:00

标签: php

我对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"));

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

1 个答案:

答案 0 :(得分:1)

PHP不会在会话之间保持状态。如果您想拥有此功能,请使用 SESSION variable