Laravel 合約是框架提供的一組具有各種功能和核心服務的介面。
例如,IlluminateContractsQueueQueue合約使用排隊作業所需的方法,而IlluminateContractsMailMailer使用發送電子郵件的方法。
定義的每個合約都包含框架的相應實作。所有 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,其中包含一個名為能力的參數和參數,它使用數組數組形式的使用者標識
.您必須定義一個合約,如下面的語法所示 -
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;
}
}
合約不包含任何實作和新的依賴項;編寫指定合約的替代實作很容易,因此使用者可以在不修改任何程式碼庫的情況下替換快取實作。
以上是Laravel - 合約的詳細內容。更多資訊請關注PHP中文網其他相關文章!