香港高速VIP云机房火爆上线啦!无需备案,开通即用!配套《巅云自助建站系统3.0》将带给您飞一般的可视化拖拽建站体验,欢迎免费体验。

建站专题

PHP观察者模式原理与简单实现方法示例

一佰互联网站开发设计(www.yinxi.net) 发布日期 2019-04-26 09:01:51 浏览数: 53

本文实例讲述了PHP观察者模式原理与简单实现方法。分享给大家供大家参考,具体如下:

当一个对象状态发生改变后,会影响到其他几个对象的改变,这时候可以用观察者模式。像wordpress这样的应用程序中,它容外部开发组开发插件,比如用户授权的博客统计插件、积分插件,这时候可以应用观察者模式,先注册这些插件,当用户发布一篇博文后,就回自动通知相应的插件更新。

观察者模式符合接口隔离原则,实现了对象之间的松散耦合。

观察者模式UML图:

在php SPL中已经提供SplSubject和SqlOberver接口

interface SplSubject{  function attach(SplObserver $observer);  function detach(SplObserver $observer);  function notify();}interface SqlObserver{  function update(SplSubject $subject);}

下面具体实现上面例子

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数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

一佰互联是全国知名建站品牌服务商,我们有九年网站建设、网站制作、网页设计、php开发和域名注册及虚拟主机服务经验,提供的自助建站服务更是全国有名。近年来还整合团队优势自主开发了可视化多用户”巅云建站系统“3.0平台版,拖拽排版网站制作设计,轻松实现pc站、手机微网站、小程序、APP一体化全网营销网站建设 ,已成功的为全国上百家网络公司提供自助建站平台搭建服务。

相关新闻more

23
07月
团购网站建设方案(多用户、多城市分站门户类网

团购网站建设方案 网站制作方案报价: 网站程序制作 (多城市、多用户门户类) ... >>详情

21
04月
css文本两端对齐的实现代码

在做表单时我们经常遇到让上下两个字段对齐的情况,比如姓名, 手机号码, 出生地。这样我们就要用到 text-align, text-just... >>详情

30
04月
php URL跳转代码 减少外链

URL跳转代码 1.代码: <? $url=$_GET["url"];header("Location:"."http://".$ur... >>详情

20
04月
HTML5 script元素async、de

(译者注: 异步加载,可以理解为无阻塞并发处理.) 我对于HTML5感到兴奋不已的原因之一是它实现了众多业界期待已久的特性。我们一直需要输入... >>详情

营业执照. cdn加速服务 备案系统认证 网络安全协会 我们的支付方式AAA认证
上海 北京 深圳 广州 天津 杭州 南京 武汉 成都 沈阳 大连 长沙 济南 青岛 苏州 福州 无锡 哈尔滨 宁波 重庆 大庆 厦门 西安 长春 珠海 郑州 海口 昆明 太原 石家庄 温州 合肥 乌鲁木齐 南宁 南通 合肥 兰州 呼和浩特 贵阳 烟台 秦皇岛 包头 唐山 银川 汕头 连云港 威海 西宁 湛江 北海 万州 涪陵 长寿 黔江 永川 丰都 忠县 江津 南川 开县 云阳 万盛 梁平 垫江 巫山 城口 建站宝盒 免费建站 门户网站建设 微信网站 手机网站 门户网站制作

7x24小时服务电话:18581389571 传真:023-85725751 免费建站交流群:236412099 139947842(自助建站交流) E-Mail:post@yinxi.net 网站投诉:
重庆楚捷科技有限公司 一佰互联©版权所有 自助建站(www.yinxi.net,Inc.) 2001-2020 All Rights Reserved 本站程序受法律保护,网站法律顾问:ITLAW-庄毅雄律师
中华人民共和国信息产业部网站备案号:渝ICP备12000592号