Laravel Contracts合同

Laravel Contracts合同

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|mixedarguments
      * @return bool
   */
   public function can(ability,arguments = []);
}

合约使用一个函数,该函数包含一个名为 ability 的参数和使用用户标识的 数组 形式的参数 arguments

您需要按照下面的语法来定义一个合约−

interface <contract-name>

使用合同(contracts)就像创建健壮、经过充分测试的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 Cachecache
      * @return void
   */

   public function __construct(Cache cache) {this->cache = $cache;
   }
}

合同不包含实现和新依赖关系;编写指定合同的替代实现很容易,因此用户可以在不修改任何代码库的情况下替换缓存实现。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程