1

我对 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”消息(即每次都重新初始化记录器)。我究竟做错了什么?

4

1 回答 1

1

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

于 2012-09-07T20:48:15.817 回答