Laravel Contracts合同
Laravel合同是框架提供的一组具有各种功能和核心服务的接口。
例如, Illuminate\Contracts\Queue\Queue 合同使用了一个用于排队作业的方法,而 Illuminate\Contracts\Mail\Mailer 使用了一个用于发送电子邮件的方法。
每个定义的合同都包含了相应的框架实现。所有Laravel合同都可以在下面提到的GitHub仓库中找到 –
https://github.com/illuminate/contracts
该仓库提供了Laravel框架中的各种合同,可以下载并相应地使用。
重点
在使用Laravel合同时,请注意以下重要点:
- 在类的构造函数中定义外观是强制性的。
-
合同在类中明确定义,不需要在构造函数中定义合同。
示例
考虑以下用于Laravel授权的合同 –
合约使用一个函数,该函数包含一个名为 ability 的参数和使用用户标识的 数组 形式的参数 arguments 。
您需要按照下面的语法来定义一个合约−
使用合同(contracts)就像创建健壮、经过充分测试的Laravel应用程序的外观一样。使用合同和外观有一些 实际区别 。
以下代码演示了使用合同来缓存一个存储库的示例 −
合同不包含实现和新依赖关系;编写指定合同的替代实现很容易,因此用户可以在不修改任何代码库的情况下替换缓存实现。