我正在寻找实现消息/通知系统的“最佳实践”方式。我正在使用基于OOP的方法编写脚本,并希望按照以下方式执行操作:
if(!$something)
$messages->add('Something doesn\'t exist!');
messages类中的add()方法看起来像这样:
class messages {
public function add($new) {
$messages = $THIS_IS_WHAT_IM_LOOKING_FOR; //array
$messages[] = $new;
$THIS_IS_WHAT_IM_LOOKING_FOR = $messages;
}
}
最后,有一种方法可以读出$ messages并将每条消息作为格式良好的HTML返回。
所以问题是 - 我应该为$THIS_IS_WHAT_IM_LOOKING_FOR
使用什么类型的变量?
$messages
数组。有什么建议吗?
谢谢!
编辑:我在上面引起了一些混淆后添加...
$messages
数组应该是全局的:我需要能够通过各种不同的类以及整个脚本的顶层添加它。
最好的比较是使用数据库来存储运行时发生的所有消息,当它是输出时,查询数据库并输出每条消息。这种比较的例外只是$ messages数组的生命周期是页面加载(它们在页面加载期间累积,并在之后消失)。
因此,例如,假设我在脚本中一个接一个地运行10个不同的操作。这些动作中的每一个都使用不同的类。这些类中的每一个都应该能够发布到$messages->add()
。在所有10个动作运行之后,它是“输出时间”,$ messages数组最多可以包含10个不同的消息,这些消息是通过所有不同的类添加的。
我希望这会澄清一点。
答案 0 :(得分:2)
我不清楚你想做什么,但一个好方法就是简单地使用一个私有变量:
class messages {
private $messages = array();
public function add($new) {
$this->messages[] = $new;
}
public function output() {
// Whatever; e.g. a foreach loop that echoes all the messages
}
}
答案 1 :(得分:1)
我认为你需要一个实例字段。