PHPObserver patternCode example
<?php // 观察者模式 /** * abstract subject */ interface Subject { /** * add Observer */ public function attach(Observer $obs); /** * remove Observer */ public function detach(Observer $obs); /** * notify Observer */ public function notify(); } interface Observer { public function update(Subject $sub); } /** * concrete subject */ class ConcreteSubject implements Subject { private $observerList = array(); public function attach(Observer $obs) { $this->observerList[] = $obs; } public function detach(Observer $obs) { $this->observerList = array_diff($this->observerList, [$obs]); } public function notify() { foreach($this->observerList as $ol) { $ol->update($this); } } public function doAct() { echo 'DoAct ... <br/>'; $this->notify(); } } /** * concrete observer 1 */ class Observer1 implements Observer { public function update(Subject $sub) { echo 'Observer one updated! <br/>'; } } /** * concrete observer 2 */ class Observer2 implements Observer { public function update(Subject $sub) { echo 'Observer two updated! <br/>'; } } // test code $sub = new ConcreteSubject(); $sub->attach(new Observer1()); //add observer $sub->attach(new Observer1()); $sub->attach(new Observer2()); $sub->doAct();
The above is the detailed content of Code examples of PHP observer pattern. For more information, please follow other related articles on the PHP Chinese website!