class demosubject implements splsubject{ private $observers, $value; public function __construct(){ $this->observers = array(); } public function attach(splobserver $observer){ $this->observers[] = $observer; } public function detach(splobserver $observer){ if($idx = array_search($observer, $this->observers, true)){ unset($this->observers[$idx]); } } public function notify(){ foreach($this->observers as $observer){ $observer->update($this); } } public function setvalue($value){ $this->value = $value; $this->notify(); } public function getvalue(){ return $this->value; }} class demoobserver implements splobserver{ public function update(splsubject $subject){ echo 'the new value is '. $subject->getvalue(); }} $subject = new demosubject();$observer = new demoobserver();$subject->attach($observer);$subject->setvalue(5);
复制代码