我想要一个库类来维护同一个请求的状态。我的用例是我想将“消息”传递给班级,然后随时从视图中调用它们。可以从应用程序的任何部分添加消息。
我最初是通过静态方法完成的,效果很好。但是,作为库的一部分,我还需要调用__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');
如果可能的话,我想避免使用静态(可测试性)。我看过 DI,但它似乎不合适,除非我遗漏了什么。
我可以创建一个类(非静态),但是我如何确保所有消息都写入同一个对象 - 以便我以后可以检索它们?
解决这个问题的最佳方法是什么?