ユーティリティクラスの静的メソッドにログを追加する最善の方法を理解しようとしています。私はログにlog4phpを使用しています。私は何をしたいのです:ユーティリティクラスの静的メソッドにログを追加する最善の方法は何ですか?
<?php
require_once WEBSITE_BASE_DIR . "/log4php/Logger.php";
class TestUtil
{
private static $log = Logger::getLogger("testutil");
public static function utilMethod1()
{
self::$log->trace("Entering utilMethod1");
// ... do stuff ...
self::$log->trace("Exiting utilMethod1");
}
public static function utilMethod2()
{
self::$log->trace("Entering utilMethod2");
// ... do stuff ...
self::$log->trace("Exiting utilMethod2");
}
}
しかし、私はPHPでこれを行うと$log
静的変数の初期化時に構文エラーを取得することはできません。私はこれを行う方法を見つけ出すことができる唯一の方法は、すべての静的メソッドにinit()
の呼び出しを追加することです:
<?php
require_once WEBSITE_BASE_DIR . "/log4php/Logger.php";
class TestUtil
{
private static $log = NULL;
private static function init()
{
if (self::$log == NULL)
{
self::$log = Logger::getLogger("testutil");
}
}
public static function utilMethod1()
{
self::init();
self::$log->trace("Entering utilMethod1");
// ... do stuff ...
self::$log->trace("Exiting utilMethod1");
}
public static function utilMethod2()
{
self::init();
self::$log->trace("Entering utilMethod2");
// ... do stuff ...
self::$log->trace("Exiting utilMethod2");
}
}
しかし、これは私が多くて、多くのユーティリティクラスを持っていることを与えて、冗長コードの過剰のように思えます静的メソッド。これを行うより良い方法はありますか?
静的メソッドを使用している特定の理由はありますか? – Devon
私はすべてに静的メソッドを使用していません。手続き関数をまとめてグループ化する方法と同じです。アプリケーションが関連するメソッドを持つオブジェクトに合っている場合は、非静的メソッドを使用します。 – Talisphere