1. 程式人生 > >php系統內建的 觀察者模式介面

php系統內建的 觀察者模式介面

//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();