1

私はPhpにかなり慣れていないので、これはばかげた質問かもしれません。現在、アプリのログ機能を組み込みたいと思っています。使用しているロガーを1回だけインスタンス化して、全体を高速化する必要があります(つまり、ログ呼び出しごとに新しいロガーをインスタンス化するのではなく) 。PHPのシングルトンがいかに悪いかについて読んだことがあります。静的なものは使いやすく、より良いベンチマークが得られるので、基本的にクラスを静的にすることで問題ありません。これが私の現在のコードです:

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 に答える