0

私は自分で作成したロガークラスを持っていますが、それを実装するための最良の方法がわかりません。

このwrite()クラスのメソッドは、アプリケーションのすべてのクラス内の任意のメソッドから呼び出すことができる必要があります。

以前は、Logger :: write()を静的メソッドとしてメソッドに使用していました。早くて簡単ですが、それが最善の方法ではないと感じています。

ロガークラスのインスタンスを他のオブジェクトに(コンストラクターまたはセッターメソッドを介して)挿入し、ログに書き込む必要がある場合は、次のように呼び出します。

$this->logger->write()
4

3 に答える 3

1

ロガー クラス内のプロパティやメソッドにアクセスする必要がない場合public static function write()は、静的にしない理由はまったくありません。(Logger::write( でアクセスできるように)。適切な理由がない場合、オブジェクトを強制的に初期化することは冗長です。

于 2012-12-15T18:46:57.480 に答える
1

クラスをどのように使用したいかによって異なります。

インスタンスでメソッドを使用する必要がない場合は、メソッドを静的として定義し、それを静的に呼び出します。それで問題ありませんLogger::write()

ただし、インスタンスが必要な場合は、コード全体でそのインスタンスを使用する方法を決定する必要があります。たとえば、依存性注入を使用して、必要な場所でインスタンスをコードに渡すことができます。そんな方におすすめしたい方法です。

于 2012-12-15T18:47:57.247 に答える
0

すべてのオブジェクトで使用できるようにしたいのはなぜですか? どこにでも注入するのは非常に面倒で、あまり実用的ではありません。静的メソッド、通常の関数、またはグローバル スコープ内で何かをログに記録する必要がある場合はどうすればよいでしょうか?

または簡単に言えば、単に呼び出すだけでは何が問題なのLogger::write()ですか? もしかしたら、考え過ぎていませんか?

于 2012-12-15T18:49:10.350 に答える