/** * 事件生成器 * Class EventGenerator */ abstract class EventGenerator { private $observes = [];// 观察者数组
/** * 添加观察者 * @param Observe $observe */ public function addObserve(Observe $observe) { $this->observes[] = $observe; }
/** * 通知 */ public function notify() { foreach ($this->observes as $observe) { $observe->update(); } } }
/** * 观察者接口 * Interface Observe */ interface Observe { public function update(); }
/** * 事件 * Class User */ class User extends EventGenerator { /** * 发送通知 */ public function send() { echo '给用户发送通知...'; $this->notify(); echo '发送成功!'; } }
/** * 邮件观察者 * Class EmailObserve */ class EmailObserve implements Observe {
public function update() { // TODO: Implement update() method. echo '发送邮件...'; // 邮件发送逻辑... echo '邮件发送成功...'; } }
/** * 短信观察者 * Class SMSObserve */ class SMSObserve implements Observe { public function update() { // TODO: Implement update() method. echo '发送短信...'; // 短信发送逻辑... echo '短信发送成功...'; } }