- Laravel 教程
- Laravel - 主页
- Laravel - 概述
- Laravel - 安装
- Laravel - 应用程序结构
- Laravel - 配置
- Laravel - 路由
- Laravel - 中间件
- Laravel - 命名空间
- Laravel - 控制器
- Laravel - 请求
- Laravel-Cookie
- Laravel - 响应
- Laravel - 视图
- Laravel - 刀片模板
- Laravel - 重定向
- Laravel - 使用数据库
- Laravel - 错误和日志记录
- Laravel - 表单
- Laravel - 本地化
- Laravel - 会话
- Laravel - 验证
- Laravel - 文件上传
- Laravel - 发送电子邮件
- Laravel - AJAX
- Laravel - 错误处理
- Laravel - 事件处理
- Laravel - 外观
- Laravel - 合约
- Laravel - CSRF 保护
- Laravel - 身份验证
- Laravel - 授权
- Laravel - Artisan 控制台
- Laravel - 加密
- Laravel - 哈希
- 了解发布流程
- Laravel - 访客用户门
- Laravel - Artisan 命令
- Laravel - 分页自定义
- Laravel - 转储服务器
- Laravel - 操作 URL
- Laravel 有用资源
- Laravel - 快速指南
- Laravel - 有用的资源
- Laravel - 讨论
Laravel - 合约
Laravel 合约是框架提供的具有各种功能和核心服务的一组接口。
例如,Illuminate\Contracts\Queue\Queue合约使用排队作业所需的方法,而Illuminate\Contracts\Mail\Mailer使用发送电子邮件所需的方法。
定义的每个合约都包含框架的相应实现。所有 Laravel 合约都可以在 GitHub 存储库中找到,如下所述 -
https://github.com/Illuminate/contracts
该存储库提供了 Laravel 框架中可用的各种合约,可以相应地下载和使用。
要点
在使用 Laravel 合约时,请注意以下要点 -
必须在类的构造函数中定义外观。
契约在类中显式定义,您无需在构造函数中定义契约。
例子
考虑 Laravel 中用于授权的合约,如下所述 -
<?php namespace Illuminate\Contracts\Auth\Access; interface Authorizable{ /** * Determine if the entity has a given ability. * * @param string $ability * @param array|mixed $arguments * @return bool */ public function can($ability, $arguments = []); }
该合约使用一个函数 can,其中包含一个名为ability的参数和一个以数组形式使用用户标识的arguments。
您必须定义一个合约,如下面的语法所示 -
interface <contract-name>
合约像外观一样用于创建健壮、经过充分测试的 Laravel 应用程序。契约和外观的使用存在各种实际差异。
以下代码显示了使用合约来缓存存储库 -
<?php namespace App\Orders; use Illuminate\Contracts\Cache\Repository as Cache; class Repository{ /** * The cache instance. */ protected $cache; /** * Create a new repository instance. * * @param Cache $cache * @return void */ public function __construct(Cache $cache) { $this->cache = $cache; } }
合约不包含任何实现和新的依赖项;编写指定合约的替代实现很容易,因此用户可以替换缓存实现而无需修改任何代码库。