本文實例講述了PHP觀察者模式定義與用法。分享給大家供大家參考,具體如下:
我理解的觀察者模式就是,當我們觸發(fā)一個事件的時候,想要把這個操作告訴給我想要告訴的對象,讓他們都執(zhí)行這個操作,就是將他們綁定到這個事件下。
1.定義一個基類(用于添加觀察者也就是我想要通知的對象,還有通知觀察者)
EventGenerator.php
?php abstract class EventGenerator { //存儲觀察者,因為可以有多個要通知的對象,所以是一個數(shù)組 private $observers = array(); //添加觀察者,也就是我想要通知的對象 public function addObserver($observer) { $this->observers[] = $observer; } //通知觀察者 public function notify() { //取出所有的對象去執(zhí)行操作 foreach($this->observers as $observer) { //這里我寫一個update方法,這里就要求我所有的通知對象必須要有update操作,所以一會我會定義一個借口,讓所有的觀察者強制實現(xiàn)這個方法 $observer->update(); } } } ?>
定義接口文件,讓所有觀察者實現(xiàn)update方法Observer.php
?php interface Observer { function update(); } ?>
定義實現(xiàn)觀察者模式的文件Event.php
?php header('Content-Type:text/html;charset=utf-8'); define('BASEDIR', __DIR___); require 'Config.php'; spl_autoload_register('Config::autoload'); //定義事件類繼承基類 class Event extends EventGenerator { //當觸發(fā)這個事件的時候通知所有的觀察者 public function trigger() { echo '我要開始更新了?。r/>\n'; //基類的通知方法 $this->notify(); } } //添加觀察者1 class Observer1 implements Observer { public function update() { echo '我是觀察者1,我收到你的通知了!我要干我該干的了!br/>\n'; } } //添加觀察者2 class Observer2 implements Observer { public function update() { echo '我是觀察者2,我收到你的通知了!我要干我該干的了!br/>\n'; } } //下面就要開始測試了! $event = new Event(); //添加觀察者到這個事件里 $event->addObserver(new Observer1); $event->addObserver(new Observer2); //執(zhí)行trigger操作 $event->trigger(); //這時候就會顯示! //我要開始更新了??! //我是觀察者1,我收到你的通知了!我要干我該干的了! //我是觀察者2,我收到你的通知了!我要干我該干的了! ?>
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設(shè)計有所幫助。