首頁 > php框架 > Laravel > 主體

Laravel - 合約

王林
發布: 2024-08-27 10:50:50
原創
714 人瀏覽過

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

相關標籤:
來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板