私は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」メッセージ(つまり、毎回ロガーを再初期化する)も出力しているのを確認できることです。私は何が間違っているのですか?