文章目录
Laravel 6 - 第一章 简介
Laravel 6 - 第二章 项目搭建
Laravel 6 - 第三章 文件夹结构
Laravel 6 - 第四章 生命周期
Laravel 6 - 第五章 控制反转和依赖注入
Laravel 6 - 第六章 服务容器
Laravel 6 - 第七章 服务提供者
Laravel 6 - 第八章 门面
Laravel 6 - 第九章 契约
Laravel 6 - 第十章 路由
Laravel 6 - 第十一章 中间件
Laravel 6 - 第十二章 控制器
Laravel 6 - 第十三章 请求
Laravel 6 - 第十四章 响应
Laravel 6 - 第十五章 验证器
Laravel 6 - 第十六章 Artisan命令
目录
- 文章目录
- 一、契约(Contracts)
- 二、自定义契约
- 1.创建契约接口
- 2.创建服务类
- 3.服务提供者
- 4.使用契约
- 三. 总结
一、契约(Contracts)
契约(Contracts)
主要用于定义一组接口来规范服务的功能结构。使用契约
可以定义应用程序应该如何使用这些功能,而不必关心这些功能的具体实现,有助于增加代码的可读性、可维护性和可测试性。
Laravel 6
框架提供了许多内置的契约,如:认证、数据库查询构造器、邮件发送契约等。
二、自定义契约
1.创建契约接口
首先,需要创建一个新的接口来定义契约,建议契约相关文件都放在app/Contracts
下,如没有该文件夹则手动创建即可。如:创建一个支付相关的契约,可先创建 PayContract.php
接口文件,并定义两个方法:procPayment()
、refundPayment()
,如下:
2.创建服务类
接1
中的例子,创建服务类 PayService
,用于实现 PayContract
,如下:
3.服务提供者
接1
、2
中的例子,根据( Laravel 6 - 第七章 服务提供者 )创建一个新的服务提供者
,如下:
也可直接在 app/Providers/AppServiceProvider.php
中注册 服务供者
。
4.使用契约
接上述例子,注册好 服务提供者
之后,在控制器或其他类中,可以这样使用契约
,如下:
三. 总结
由于代码现在依赖于契约
而不是具体的实现类。因此,不需要担心具体的实现细节,更不用在大型复杂的类中跟踪哪些方法可用。
通过自定义契约
可以确保应用程序保持清晰、模块化和可测试的结构,同时允许开发人员轻松地替换或扩展组件和服务。
注:官方文档中有一个章节是比较 契约
和 门面
的,其中说到:多数情况下,每个门面
都有一个等效的契约
。根据官方文档内容很容易导致大家理解混淆;其实, 契约
和 门面
的功能完全不同,作用也不同,具体使用哪个需要大家根据实际项目情况使用。