- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Laravel管道技术
什么是管道
所谓管道(Pipeline)设计模式就是将会数据传递到一个任务序列中,管道扮演者流水线的角色,数据在这里被处理然后传递到下一个步骤。
为什么使用管道
使用管道使用很多好处的,尤其是在单个任务中编写复杂处理代码时管道为我们提供了极大的便利,而且可以在管道中轻松添加、移除或者替换阶段任务。
Laravel中的管道
Laravel 在框架中的很多地方用到了 Pipeline 设计模式,这意味着所有我们需要实现管道设计模式的地方已然是应用底层的一部分了。
在laravel的一次请求中,整个数据的处理要经过很多步骤,可以比作洋葱,每一层都有一层的功能,通关层层处理,让数据成为最终想要的结果,难度在于每一层都要松耦合,可以随时在这些层之间添加新的功能,而不至于改动很大。从设计模式的角度来看这其实是一种装饰者模式。
什么是装饰者模式
在不修改原有类的情况下动态增加或减少一些功能,使原有类的扩展性大大增加。
装修者模式完成小明穿衣出门流程需求
以小明穿衣出门为需求,使用装修者模式,再不改变小明出门这个主类的前提下,给小明穿上衬衫和外套在出门。
在穿衣出门这件事情上,我们需要定义好,小明这个主体,和小明需要穿的衣服。
//定义统一的接口,用于显示最终的效果
interface?Decorator {
public function display();
}
//定义小明出门的主体
class?小明 implements Decorator {
public function display() {
????echo 我是小明,我出门了 . br;
????}
}
//定义衣服抽象类类
abstract?class?衣服 implements Decorator {
????private $component;
????public function __construct(Decorator $component) {
????????$this-component = $component;
????}
????public function display() {
????????$this-component-display();
????}
}
//定义衬衣这件具体的衣服
class?衬衣 extends 衣服 {
????public function display() {
????????echo 穿上衬衣 . br;
????????parent::display();
????}
}
//定义外套这件具体的衣服
class?外套 extends 衣服 {
????public function display() {
????????echo 穿上外套 . br;
parent::display();
}
}
执行流程
//声明小明对象
$小明?= new 小明();
$穿上衬衣的小明?= new 衬衣($小明);
$穿上外套和穿上衬衣的小明?= new 外套($穿上衬衣的小明);
//输出穿衣完成然后出门
$穿上外套和穿上衬衣的小明-display();
执行结果:
?
laravel中的管道具体实现
laravel中的管道技术处理数据,也是和小明穿衣一样一层一层的处理。上述的小明穿衣是手动实例化各个环节,很直观,而larval中因为使用容器技术,实例化过程是通过服务容器自动完成的,实例间的功能调用也是通过闭包函数完成。
中间件技术原理
中间件是laravel 管道代表,使用管道技术原理模拟一次laravel 中间件VerifyCsrfToken?对数据的处理的整个过程
1.定义好Midleware 接口,只有一个方法,并且使用Closure约束,保障每次接受值都是一个闭包
interface Middleware {
????public static function handle(Closure $next);
}
2.定义一个专门用于验证token的类
class VerifyCsrfToken implements Middleware {
????public static function handle(Closure $next) {
????????echo 验证Csrf-Token . br;
????????$next();
????}
}
3.创建闭包产生函数
function getSlice() {
????return function($stack, $pipe) {
//将整个函数以闭包的形式保存起来,以供下一次执行
????????return function()use($stack, $pipe) {
????????????return $pipe::handl
您可能关注的文档
- IDL编译器的Java实现.pdf
- iConnector打通iServer服务共用的界限.pdf
- 2007届高考文言文阅读系列训练1.doc
- 0809电子科学与技术专业《信号与系统》考研必考知识点_基础阶段_点对点教育.pdf
- ICU患者多重耐药菌感染的防护策略.pdf
- 2012数学建模通识课期末测试题目.pdf
- 2014年高考文言文阅读训练(1.doc
- 6Laplace变换.pdf
- 3.5__三角函数的最值及应用.ppt
- 2014年硕士研究生招生考试初试和复试的考试范围-电路、信号与系统.doc
- ASX_Series_操作说明书手册.pdf
- Battery-Backup-Kit-Installation-操作说明书手册.pdf
- DCB-05-V2-操作说明书手册.pdf
- DEIMOS-Installation-操作说明书手册.pdf
- Axess-Pro-Series-2120-Roller-Shutter-Pendant-操作说明书手册.pdf
- Controll-A-Door-P-Diamond-操作说明书手册.pdf
- Controll-A-Door-PD-Power-Drive-操作说明书手册.pdf
- Controll-A-Door-Secure-SDO-6-操作说明书手册.pdf
- AMX_Series_操作说明书手册.pdf
- ELI-250-Installation-操作说明书手册.pdf
最近下载
- 中华人民共和国机械行业标准燃煤热风炉技术条件.PDF
- 武汉市光谷为明实验学校新初一分班语文试卷含答案.pdf VIP
- 浙江大学紫金港校区校园平面图.PDF VIP
- 中级车号员(长)试题及答案.pdf VIP
- 铁路车号员(长):中级车号员(长)测试题.docx VIP
- 铁路车号员(长)中级车号员(长)试卷(铁路车号员(长)).doc VIP
- 铁路车号员(长)车号员一体化考试试卷(铁路车号员(长)).doc VIP
- 铁路车号员(长)铁路车号员(长)综合练习试卷(铁路车号员(长)).doc VIP
- 铁路车号员(长)铁路车号员(长)综合练习试卷.doc VIP
- 初中数学高质量作业设计策略与实践.pptx
文档评论(0)