首頁  >  文章  >  php框架  >  laravel契約的用法是什麼

laravel契約的用法是什麼

WBOY
WBOY原創
2022-02-24 15:06:152439瀏覽

在laravel中,契約指的是框架提供的一系列定義核心服務的接口,用於方便第三方接口開發人員的開發,所有契約的實現組成了框架所有的核心任務,並且可以透過契約了解指定功能的作用。

laravel契約的用法是什麼

本文操作環境:Windows10系統、Laravel6版、Dell G3電腦。

laravel契約的用法是什麼

契約是什麼

Laravel中的契約是指框架提供的一系列定義核心服務的接口,例如緩存,隊列,日誌的接口,契約就是接口

為什麼要定義接口

定義接口目的為了解耦

當我們依賴注入緩存實例的時候laravel實現如下:

例如:我們選擇使用memcached 快取驅動

use Illuminate\Contracts\Cache\Repository as Cache;
class Repository{
    /**
     * 创建一个新的Repository实例
     *
     * @param  Cache  $cache
     * @return void
     */
    public function __construct(Cache $cache)
    {
        $this->cache = $cache;
    }
}

不定義介面

#如果不定義介面我們必須這樣寫

use Memcached;
class Repository{
    /**
     * 创建一个新的Repository实例
     *
     * @param  Cache  $cache
     * @return void
     */
    public function __construct(Memcached $cache)
    {
        $this->cache = $cache;
    }
}

這樣當我們需要切換快取驅動為redis的時候,我們必須去控制器中把依賴注入的類型約定修改成redis,因為redis 的實現,和Memcached 並不一定完全相同,這就說明Memcached緩存緊密耦合與laravel 

什麼才算是鬆散耦合

什麼才算鬆散耦合,當系統升級,需要對一種實現進行修改(如從Memcached 需要升級到Redis)時,能夠不對代碼庫進行修改,只需要對配置進行修改就能完成升級的時候就算是鬆散耦合了!

一個契約兩種,或者多種實現

個人感覺,契約既然定了,那麼對應的實現應該是兩種,或者更多的實現,或者在不久的將來會有兩個或更多的實現,契約就是來規定這麼多實現的。如果肯定只有一種實現,感覺契約就沒啥用了!

總結

定義契約,是為了一組功能實現的一個約定,方便第三方介面開發人員的開發

契約更像一個框架的一個目錄索引,所有契約的實現組成了框架所有的核心服務,並且可以透過契約快速了解這一組功能是做什麼的

對於快取類別來說,快取的契約,就是為了規定各種快取實作(Memcached,Redis,檔案快取)需要實現的功能

【相關推薦:laravel影片教學

以上是laravel契約的用法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn