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中文網其他相關文章!