《PHP實戰:PHP觀察者模式原理與簡單實現方法示例》要點:
本文介紹了PHP實戰:PHP觀察者模式原理與簡單實現方法示例,希望對您有用。如果有疑問,可以聯系我們。
PHP編程本文實例講述了PHP觀察者模式原理與簡單實現方法.分享給大家供大家參考,具體如下:
PHP編程當一個對象狀態發生改變后,會影響到其他幾個對象的改變,這時候可以用觀察者模式.像wordpress這樣的應用程序中,它容外部開發組開發插件,比如用戶授權的博客統計插件、積分插件,這時候可以應用觀察者模式,先注冊這些插件,當用戶發布一篇博文后,就回自動通知相應的插件更新.
PHP編程觀察者模式符合接口隔離原則,實現了對象之間的松散耦合.
PHP編程觀察者模式UML圖:
PHP編程
PHP編程在php SPL中已經提供SplSubject和SqlOberver接口
PHP編程 interface SplSubject { function attach(SplObserver $observer); function detach(SplObserver $observer); function notify(); } interface SqlObserver { function update(SplSubject $subject); }
PHP編程下面具體實現上面例子
PHP編程 class Subject implements SplSubject { private $observers; public function attach(SplObserver $observer) { if (!in_array($observer, $this->observers)) { $this->observers[] = $observer; } } public function detach(SplObserver $observer) { if (false != ($index = array_search($observer, $this->observers))) { unset($this->observers[$index]); } } public function post() { //post相關code $this->notify(); } private function notify() { foreach ($this->observers as $observer) { $observer->update($this); } } public function setCount($count) { echo "數據量加" . $count; } public function setIntegral($integral) { echo "積分量加" . $integral; } } class Observer1 implements SplObserver { public function update($subject) { $subject-> setCount(1); } } class Observer2 implements SplObserver { public function update($subject) { $subject-> setIntegral(10); } } class Client { public function test() { $subject = new Subject(); $subject->attach(new Observer1()); $subject->attach(new Observer2()); $subject->post();//輸出:數據量加1 積分量加10 } }
PHP編程更多關于PHP相關內容感興趣的讀者可查看本站專題:《php面向對象程序設計入門教程》、《PHP基本語法入門教程》、《PHP數組(Array)操作技巧大全》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》
PHP編程希望本文所述對大家PHP程序設計有所幫助.
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/227.html