同じリクエスト全体で状態を維持するライブラリ クラスが必要です。私のユースケースは、「メッセージ」をクラスに渡し、ビューからいつでも呼び出すことです。アプリケーションのどの部分からでもメッセージを追加できます。
私はもともと静的メソッドを介してこれを行っていましたが、うまくいきました。ただし、ライブラリの一部として、静的クラスでは実行できない__construct
andも呼び出す必要があります。__destruct()
これが私がやろうとしていることの非常に簡単な例です:
class Messages
{
private static $messages = array();
public function __construct()
{
// do something
}
public function __destruct()
{
// do something else
}
public static function add($message)
{
self::$messages[] = $message;
}
public static function get()
{
return self::$messages;
}
}
次に、次のようにして、コードの任意の場所にメッセージを追加できます
Messages::add('a new message');
可能な限り static の使用を避けたい (テスト可能性)。私はDIを見てきましたが、何かが欠けていない限り、適切ではないようです。
代わりにクラス (非静的) を作成することもできますが、すべてのメッセージが同じオブジェクトに書き込まれるようにするにはどうすればよいでしょうか。
これに取り組む最善の方法は何ですか?