
Laravel架构之Contracts
发布日期:2021-05-28 16:19:16
浏览次数:34
分类:精选文章
本文共 633 字,大约阅读时间需要 2 分钟。
Laravel的契约系统是一个定义框架提供核心服务接口的集合。以Illuminate\Contracts\Queue\Queue
为例,它定义了处理任务队列所需的基础方法,而Illuminate\Contracts\Mail\Mailer
则规范了电子邮件发送的操作流程。每个契约都附带了框架的默认实现,例如支持多种驱动程序的队列处理逻辑或基于SwiftMailer的邮件发送功能。
这些契约通常存储在专门的GitHub仓库中,这为开发者提供了一个集中化的资源点,方便查阅和使用任何可用接口的实现细节。
梳理契约与Facades的关系
作为Laravel服务的另一种使用方式,Facades和Helper函数提供了一种无需直接从服务容器中解析契约的便利途径。在大多数情况下,Facades接口与对应的契约是等价的。然而,契约的优势在于它允许我们在类构造时明确声明依赖性。一些开发者更倾向于用契约进行操作,因为这赋予了更高的可控性。
无论是使用Facades还是契约,大多数项目都能实现目标。但在构建程序包时,推荐使用契约,因为它更便于测试和扩展。
使用契约的场景
是否选择使用契约或Facades,关键在于开发者的偏好和项目需求。两者均可以用来构建功能完善并经过充分测试的Laravel应用程序。只要保持代码的职责分离原则,效果基本一致。
然而,若要在构建程序包时选择契约,这通常是更好的选择。因为这种方法能够更好地支持测试环境,同时确保程序包的高度可定制性和可扩展性。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月21日 17时13分34秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux——系统安全及应用(开关机安全机制、系统弱口令检测、NMAP)
2019-03-17
kafka超时错误或者发送消息失败等错误,排错方式
2019-03-17
Python3 排序函数问题
2019-03-17
Windows下配置单机Hadoop环境 pyspark
2019-03-17
git教程之远程仓库
2019-03-17
Vue路由跳转如何传递一个对象过去?
2019-03-17
sockjs-node/info?t=1462183700002 报错解决方案
2019-03-17
FI 替代相关 OSS Note 要点记录
2019-03-17
蓝桥杯---试题 算法提高 欧拉函数(数学)
2019-03-17
【网络加速】TensorRT7-开发指南中文_Plus版【1】
2019-03-17
SaltStack about The Top File 使用知识介绍
2019-03-17
网络协议和支持(一)、uuid模块
2019-03-17
numpy.vstack
2019-03-17
numpy.frombuffer()
2019-03-17
文件结束符EOF
2019-03-17
Latex 错误集合
2019-03-17
Python的内置函数(四十一)、 index()
2019-03-17
卷积神经网络的工程技巧总结
2019-03-17