Laravel 契约 Laravel Facades Laravel CSRF保护 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 的 参数 和使用 数组 形式的用户标识的 参数 。 您将不得不按照以下语法来定义合同 - interface <contract-name> 合同的使用类似于Facade,用于创建强大的,经过良好测试的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; } } 合同不包含实现和新的依赖关系; 编写指定契约的替代实现很容易,因此用户可以在不修改任何代码库的情况下替换缓存实现。 Laravel Facades Laravel CSRF保护