php系統內建的 觀察者模式介面
阿新 • • 發佈:2019-02-04
//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 functionattach(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();