- 6
- 0
- 约4.53千字
- 约 5页
- 2017-08-22 发布于湖北
- 举报
架构 ―― 契约
架构 ―― 契约
架构 —— 契约 (Contracts)
1、简介
Laravel的契约是指框架提供的⼀系列定义核⼼服务的接⼜。⽐
如,Illuminate\Contracts\Queue\Queue契约定义了队列任务需要的⽅
法,Illuminate\Contracts\Mail\Mailer契约定义了 送邮件所需要的⽅法。
每⼀个契约都有框架提供的相应实现。⽐如,Laravel提供了多个驱动的队列实现,邮
件实现则由 SwiftMailer驱动。
所有的Laravel契约都有其GitHub库,这为所有有效的契约提供了快速⼊门指南,同时
也可以作为独⽴、解耦的包被包开 者使⽤。
1.1 契约 (Contracts) VS 门⾯ (Facades)
Laravel的门⾯为Laravel服务的使⽤提供了⼀个简便的⽅式——不再需要从服务容器中
类型提⽰和解析契约。然⽽,使⽤契约允许你为类定义明确的依赖,在⼤多数应⽤
中,使⽤门⾯刚刚好,但是,如果你需要更多更多松耦合,那么契约⽆疑是合适的,
继续看下去 !
2、为什么使⽤契约?
关于契约你可能存有疑问。为什么要全部使⽤这些契约接⼜?难道使⽤契约接⼜不是
更复杂?下⾯让我们从这两个⽅⾯来说明使⽤契约接⼜的原因:松耦合和简单。
2.1 松耦合
⾸先,让我们看看⼀些缓存实现的紧密耦合代码:
?php
namespace App\Orders;
class Repository{
/**
* 缓存
*/
protected cache;
/**
* 创建⼀个新的Repository实例
*
* @param \SomePackage\Cache\Memcached cache
* @return void
*/
public function __construct(\SomePackage\Cache\Memcached cach
{
this-cache = cache;
}
/**
* 通过ID获取订单
*
* @param int id
* @return Order
*/
public function find( id)
{
if ( this-cache-has( id)) {
//
}
}
}
在这个类中,代码和给定缓存实现紧密耦合,因为我们基于⼀个来⾃包的具体的缓存
类,如果报的API变了,那么相应的,我们的代码必须做修改。
类似的,如果我们想要替换底层的缓存技术 (Memcached )为别的技术实现
(Redis ),我们将再⼀次不得不修改我们的代码库。我们的代码库应该并不知道谁提
供的数据或者数据是怎么提供的。
我们可以基于⼀种简单的、与提供者⽆关的接⼜来优化我们的代码,从⽽替代上述那
种实现:
?php
namespace App\Orders;
use Illuminate\Contracts\Cache\Repository as Cache;
class Repository{
/**
* 创建⼀个新的Repository实例
*
* @param Cache cache
* @return void
*/
public function __construct(Cache cache)
{
this-cache = cache;
}
}
现在代码就不与任何特定提供者耦合,甚⾄与Laravel都是⽆关的。由于契约包不包含
任何实现和依赖,你可以轻松的为给定契约编写可选实现代码,你可以随意替换缓存
实现⽽不⽤去修改任何缓存消费代码。
2.2 简单
当所有Laravel服务都统⼀在简单接⼜中定义,很容易判断给定服务提供的功能。契约
可以充当框架特性的简明⽂档。
此外,基于简单接⼜,代码也更容易理解和维护。在⼀个庞⼤⽽复杂的类中,与其追
踪哪些⽅法时有效的,不如转向简单、⼲净的接⼜。
3、契约列表
下⾯是Laravel契约列表,以及其对应的“ 门⾯”
契约
您可能关注的文档
- 未来愿景简报.ppt
- 未污染的穹顶.docx
- 末解之迷1.ppt
- 本族语_目标语和中介语三语相交的二语习得理论模型.pdf
- 本月预约披露中报上市公司情况一览.doc
- 本周学习.doc
- 期间费用培训.ppt
- 术语会编.pdf
- 朱兴义开题.doc
- 机房作业提交方法.ppt
- 人教版八年级上册历史精品教学课件 第六单元 中华民族的抗日战争 第17课 七七事变与全民族抗战 (6).ppt
- 人教版八年级上册历史精品教学课件 期末专题复习 专题二 中国人民近代化的探索 (2).ppt
- 人教版八年级上册历史精品教学课件 第二单元 近代化的早期探索与民族危机的加剧 第5课 甲午中日战争与列强瓜分中国狂潮 (2).ppt
- 人教版八年级上册历史精品教学课件 第七单元 人民解放战争 大概念引领下的大单元复习 (4).ppt
- 人教版八年级上册历史精品教学课件 第七单元 人民解放战争 第21课 人民解放战争的胜利 (2).ppt
- 人教版八年级上册历史精品教学课件 第三单元 资产阶级民主革命与中华民国的建立 第10课 中华民国的创建 (2).ppt
- 人教版八年级上册历史精品教学课件 第四单元 新民主主义革命的开始 第12课 新文化运动 (3).ppt
- 第四组塑料低温脆化温度测试详解演示文稿.ppt
- 第消费者行为演示文稿.ppt
- 第一部分用搜索方法求解问题演示文稿.ppt
最近下载
- 四、英格索兰安装指导手册-无锡英格索兰.doc VIP
- 2025AHA、ACC高血压管理指南核心更新解读.pptx
- 有机化学课件:第7章 醇酚醚.ppt VIP
- 员工认同感提升课件.pptx VIP
- 前列腺炎诊疗常规.docx VIP
- 有机化学课件:第7章 卤代烃.ppt VIP
- 2024-2025学年度江苏安全技术职业学院单招考试文化素质数学测试卷含答案详解【满分必刷】.docx VIP
- (一模)2026届大湾区高三普通高中毕业年级联合模拟考试(一)物理试卷(含答案).docx
- 2025年中考数学冲刺《二次函数新定义型综合问题》含答案解析.pdf VIP
- 2025年士官英语作文真题及答案.doc VIP
原创力文档

文档评论(0)