Laravel orm 观察者模式理解observe
在开发中我们经常需要新增,修改、、、等模型操作 操作完成后需要触发个事件 以前一般的做法
<?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相关推荐
- php hasmany,浅谈laravel orm 中的一对多关系 hasMany
个人对于laravel orm 中对于一对多关系的理解 文章表 article,文章自然可以评论,表 comment 记录文章的评论,文章和评论的关系就是一对多,一篇文章可以有多个评论. 在 comm ...
- orm的理解_ORM仇恨者无法理解
orm的理解 我看过无数的文章和评论(尤其是评论),它们告诉我们ORM(对象关系映射)概念的严重性,糟糕性和错误性. 以下是通常的声明,以及我对它们的评论: "它们很慢" –映射有 ...
- php orm教程,Laravel ORM 数据model操作教程
随机查询 $data=Move::where('release',1) ->where('is_hot',1) ->where('is_status',1) ->orderBy(\D ...
- 常见java面试遇到的ORM框架理解
常见ORM框架理解 前言: JAVA编程免不了和数据库打交道,那么如何高效便捷地操作数据库,也是一个需要而对的问题,原生的基于JDBC的方式当然是非常低效,而且要写一大堆无用的模板代码,不值得选取.好 ...
- Java观察者模式理解和实现
今天本想一本正经的把RxJava看一看,想着前段时间RxJava都已经到了第二版,而自己RxJava的认识还只是很基础,甚至连基础都算不上,所以本着以后能在项目里优雅地把他用出来的想法,我开始了RxJ ...
- JavaScript --- [学习笔记]观察者模式 理解对象 工厂模式 构造函数模式
说明 本系列(JS基础梳理)为后面TCP的模拟实现做准备 本篇的主要内容: 观察者模式.工厂模式.构造函数模式 和 对对象的理解 1. 观察者模式 参考JavaScript设计模式 1.1 消息注册方 ...
- Angularjs 观察者模式 理解
观察者模式 观察者模式从字面意思就能知道它主要是做什么的,所以理解起来不难,但实际实现还是有一些难度. 观察者模式是定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得 ...
- JAVA设计模式-观察者模式(Observe)
观察者模式 其实就是一个发布者和订阅者之间的关系 如果订阅者订阅了发布者,那么发布者发布一条消息,订阅者就会立马知道. 中间的关系也就是订阅者需要去订阅消息(也就是,发布者的通知资源池子(也就是存储订 ...
- php laravel 理解,程序员-说一下PHP框架Laravel,如何理解她的思想
如何理解laravel的思想? 1)更新太快,疲于追赶 Laravel 4.x开发出的程序要升级到 5.x的,貌似都大动干戈? 2)让人后怕的Route 为什么就没有一个固定的规则?非得每一个网址都写 ...
最新文章
- JS中相等运算符 == 隐式转换
- DataSet.Relations 属性
- 网站开发中JS中的常用语句
- jsbridge原理_React Hooks 原理与最佳实践
- 一位Oracle老司机的openGauss初体验
- 安装windows时loading files结束就重启_软网推荐:不用制作系统盘 也能安装新系统...
- C#版 Tag云图控件
- arcgis图像和坐标系统一致但不重合_学习ArcGIS,这62个Arcmap常用操作技巧可能帮到您...
- FreePiano下载与使用
- 数学竞赛辅导陈启浩pdf_高中数学一题多解经典题型汇编(一)
- 十六、算术编码_2、算术编码举例实现
- 数学建模-Logistic模型
- 蛋白质结构预测大赛top1方案分享
- 设置网站301跳转,直接输入主域名跳转至www域名
- 在Activity中获取另一个XML文件的控件
- indesign中怎么在冒号后面ctrl_InDesign不完全使用指南
- vivo手机互传的文件怎么找到_小白换机最头疼文件转移!学会vivo互传这几个技巧,换机更轻松...
- 用 C语言模拟买猫的过程
- 如何优化SEO的网站结构
- 02 固定效应模型与Stata实现
热门文章
- 尬住了!小扎被自家产品爆黑料;酷炫清晰的『技术学习路线图』大合辑;Markdown引用块的N种样式;地形设计工具;前沿论文 | ShowMeAI资讯日报
- Android APN的配置和加载
- 石油和计算机的交叉研究
- TCL电子2020年首季度电视机销售量达673万台
- pmd java规则_PMD执行Java代码分析的原理
- 浓眉哥去向成悬疑剧 NBA交易转会“戏精”越来越多
- 题解报告:hdu 2066 一个人的旅行
- 华为手机使用profile闪退问题
- 在ec2上创建root用户,并使用root 通过Xshell远程登录aws云服务器
- 双引号用html语言写,js、html中的单引号、双引号及其转义使用.doc