//SplObserver 是系统内置的 观察者接口; class MyObserver1 implements SplObserver { //SplSubject 是系统内置的事件发生者接口 public function update(SplSubject $subject) { echo __CLASS__ . ' - ' . $subject->getName(); } } class MyObserver2 implements SplObserver { public function update(SplSubject $subject) { echo __CLASS__ . ' - ' . $subject->getName(); } } //SplSubject系统内置的事件发生者 class MySubject implements SplSubject { private $_observers; private $_name; public function __construct($name) { //必须这么写 $this->_observers = new SplObjectStorage(); $this->_name = $name; } public function attach(SplObserver $observer) { $this->_observers->attach($observer); } public function detach(SplObserver $observer) { $this->_observers->detach($observer); } public function notify() { foreach ($this->_observers as $observer) { $observer->update($this); } } public function getName() { return $this->_name; } } $observer1 = new MyObserver1(); $observer2 = new MyObserver2(); $subject = new MySubject("test"); $subject->attach($observer1); $subject->attach($observer2); $subject->notify();
php系统内置的 观察者模式接口
最新推荐文章于 2022-10-28 19:45:20 发布