在开发中我们经常需要新增,修改、、、等模型操作 操作完成后需要触发个事件 以前一般的做法

<?php//例子1
$row = User::InsertGetId(['name'=>''张三]);
if($row){User::wehre('id',$row)->update([]);return $this->json('操作成功');
}
---------------------------------------------------------
//例子2
class order{ public function addOrder(){Log::update();}
}
$order = new order();
$order->addOrder();
?>

以上两个例子是不是我们一般的做法 增加了操作上的复杂性 要去操作成功上述后进行下一步的操作

现在我们讲讲 观察者模式 设计原理

<?php//被观察者接口
interface Observable{function add(observe $observe);function del(observe $observe);function notify();
}//订单被观察者class order implements Observable{private $instance=array();function add(observe $observe){ //  $this->instance[] = $observe; 将实例服务放进去容器里 $key = array_search($observe,$this->instance);if($key === false){$this->instance[] = $observe;}}function del(observe $observe){//  $this->instance[] = $observe; 将实例服务放进去容器里 $key = array_search($observe,$this->instance);if($key !== false){unset($this->instance[$key]);}}function notify(){   // 通过循环调用对应的修改类foreach($this->instance as $key=>$val){$val->update();}}
}interface observe{function update();
}
class Email implements  observe{function update(){echo '发送邮件';}
}
class Message implements  observe{function update(){echo '发送短信';}
}//客户端调用
$order = new order();
$order->add(new Email());//注入
$order->add(new Message());
$order->del(new Email());
$order->notify();//通知?>

在laravel中我们可以使用 php artisan  make:observer Artisan 命令可以快速建立新的观察者类:

laravel 在加载后通过 AppServiceProvider  boot延迟注册 将 创建的观察者类注入

Laravel orm 观察者模式理解observe相关推荐

  1. php hasmany,浅谈laravel orm 中的一对多关系 hasMany

    个人对于laravel orm 中对于一对多关系的理解 文章表 article,文章自然可以评论,表 comment 记录文章的评论,文章和评论的关系就是一对多,一篇文章可以有多个评论. 在 comm ...

  2. orm的理解_ORM仇恨者无法理解

    orm的理解 我看过无数的文章和评论(尤其是评论),它们告诉我们ORM(对象关系映射)概念的严重性,糟糕性和错误性. 以下是通常的声明,以及我对它们的评论: "它们很慢" –映射有 ...

  3. php orm教程,Laravel ORM 数据model操作教程

    随机查询 $data=Move::where('release',1) ->where('is_hot',1) ->where('is_status',1) ->orderBy(\D ...

  4. 常见java面试遇到的ORM框架理解

    常见ORM框架理解 前言: JAVA编程免不了和数据库打交道,那么如何高效便捷地操作数据库,也是一个需要而对的问题,原生的基于JDBC的方式当然是非常低效,而且要写一大堆无用的模板代码,不值得选取.好 ...

  5. Java观察者模式理解和实现

    今天本想一本正经的把RxJava看一看,想着前段时间RxJava都已经到了第二版,而自己RxJava的认识还只是很基础,甚至连基础都算不上,所以本着以后能在项目里优雅地把他用出来的想法,我开始了RxJ ...

  6. JavaScript --- [学习笔记]观察者模式 理解对象 工厂模式 构造函数模式

    说明 本系列(JS基础梳理)为后面TCP的模拟实现做准备 本篇的主要内容: 观察者模式.工厂模式.构造函数模式 和 对对象的理解 1. 观察者模式 参考JavaScript设计模式 1.1 消息注册方 ...

  7. Angularjs 观察者模式 理解

    观察者模式 观察者模式从字面意思就能知道它主要是做什么的,所以理解起来不难,但实际实现还是有一些难度. 观察者模式是定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得 ...

  8. JAVA设计模式-观察者模式(Observe)

    观察者模式 其实就是一个发布者和订阅者之间的关系 如果订阅者订阅了发布者,那么发布者发布一条消息,订阅者就会立马知道. 中间的关系也就是订阅者需要去订阅消息(也就是,发布者的通知资源池子(也就是存储订 ...

  9. php laravel 理解,程序员-说一下PHP框架Laravel,如何理解她的思想

    如何理解laravel的思想? 1)更新太快,疲于追赶 Laravel 4.x开发出的程序要升级到 5.x的,貌似都大动干戈? 2)让人后怕的Route 为什么就没有一个固定的规则?非得每一个网址都写 ...

最新文章

  1. JS中相等运算符 == 隐式转换
  2. DataSet.Relations 属性
  3. 网站开发中JS中的常用语句
  4. jsbridge原理_React Hooks 原理与最佳实践
  5. 一位Oracle老司机的openGauss初体验
  6. 安装windows时loading files结束就重启_软网推荐:不用制作系统盘 也能安装新系统...
  7. C#版 Tag云图控件
  8. arcgis图像和坐标系统一致但不重合_学习ArcGIS,这62个Arcmap常用操作技巧可能帮到您...
  9. FreePiano下载与使用
  10. 数学竞赛辅导陈启浩pdf_高中数学一题多解经典题型汇编(一)
  11. 十六、算术编码_2、算术编码举例实现
  12. 数学建模-Logistic模型
  13. 蛋白质结构预测大赛top1方案分享
  14. 设置网站301跳转,直接输入主域名跳转至www域名
  15. 在Activity中获取另一个XML文件的控件
  16. indesign中怎么在冒号后面ctrl_InDesign不完全使用指南
  17. vivo手机互传的文件怎么找到_小白换机最头疼文件转移!学会vivo互传这几个技巧,换机更轻松...
  18. 用 C语言模拟买猫的过程
  19. 如何优化SEO的网站结构
  20. 02 固定效应模型与Stata实现

热门文章

  1. 尬住了!小扎被自家产品爆黑料;酷炫清晰的『技术学习路线图』大合辑;Markdown引用块的N种样式;地形设计工具;前沿论文 | ShowMeAI资讯日报
  2. Android APN的配置和加载
  3. 石油和计算机的交叉研究
  4. TCL电子2020年首季度电视机销售量达673万台
  5. pmd java规则_PMD执行Java代码分析的原理
  6. 浓眉哥去向成悬疑剧 NBA交易转会“戏精”越来越多
  7. 题解报告:hdu 2066 一个人的旅行
  8. 华为手机使用profile闪退问题
  9. 在ec2上创建root用户,并使用root 通过Xshell远程登录aws云服务器
  10. 双引号用html语言写,js、html中的单引号、双引号及其转义使用.doc