要点
在使用 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,其中包括parameter命名的ability和arguments它以以下形式使用用户标识array.
您必须定义一个合约,如下面的语法所示 -
interface <contract-name>
合约像外观一样用于创建健壮的、经过充分测试的 Laravel 应用程序。有各种practical differences使用契约和外观。
以下代码显示了使用合约来缓存存储库 -
<?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;
}
}
合约不包含任何实现和新的依赖项;编写指定合约的替代实现很容易,因此用户可以替换缓存实现而无需修改任何代码库。