亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

Laravel5中contracts詳解

2020-03-22 18:32:45
字體:
來源:轉載
供稿:網友
我們先來看看官方文檔中對contracts的定義:Laravel's Contracts are a set of interfaces that define the core services provided by the framework.
意思是說Laravel的Contracts是一個由 框架提供 的定義了 核心服務接口 的集合。也就是說,每一個Contract都是一個接口,對應一個框架核心服務。那它的意義何在?網址給出的解釋也很簡單:使用接口是為了 松耦合 和 簡單 。先不講大道理,先來點干貨,看看怎么使用contract先瀏覽下contracts接口列表:復制代碼 代碼如下:
Illuminate/Contracts/Auth/Guard
Illuminate/Contracts/Auth/PasswordBroker
Illuminate/Contracts/Bus/Dispatcher
Illuminate/Contracts/Cache/Repository
Illuminate/Contracts/Cache/Factory
Illuminate/Contracts/Config/Repository
Illuminate/Contracts/Container/Container
Illuminate/Contracts/html' target='_blank'>Cookie/Factory
Illuminate/Contracts/Cookie/QueueingFactory
Illuminate/Contracts/Encryption/Encrypter
Illuminate/Contracts/Routing/Registrar
…… 太多了,懶得繼續貼了,網址手冊里有。我們就拿 Illuminate/Contracts/Routing/Registrar 這個contract來演示一下吧。
首先,打開 app/Providers/AppServiceProvider.php,注意register方法:復制代碼 代碼如下:
public function register()
{
$this- app- bind(
'Illuminate/Contracts/Auth/Registrar',
'App/Services/Registrar'
);
}
$this- app 就是Application對象,也是容器對象,通過 $this- app- bind 方法我們綁定了一個實現Illuminate/Contracts/Auth/Registrar接口的類App/Services/Registrar。注意,Illuminate/Contracts/Auth/Registrar就是一個contract。App/Services/Registrar 這個類文件在 app/Services/Registrar.php。接著我們看 App/Http/Controllers/Auth/AuthController 這個控制器類,看到它有 __construct 構造函數:復制代碼 代碼如下:
public function __construct(Guard $auth, Registrar $registrar)
{
$this- auth = $auth;
$this- registrar = $registrar; $this- middleware('guest', ['except' = 'getLogout']);
}
它有兩個參數,對應的類命名空間在腳本開頭可以看到:復制代碼 代碼如下:
use Illuminate/Contracts/Auth/Guard;
use Illuminate/Contracts/Auth/Registrar;
這兩個都是contract,但我們這里就拿 Registrar 說,我們注意到這里面只是通過參數類型指明了$registrar的接口類型,而實際調用的時候實際上是 App/Services/Registrar 這個類,這就是依賴注入的特性了,Laravel會自動在容器中搜索實現了接口Illuminate/Contracts/Auth/Registrar的類或對象,有的話就取出來作為實際參數傳到構造函數里。整個使用流程其實就可以總結為兩個步驟:向容器中注冊實現contract接口的對象。
構造函數參數類型指定為contract接口類,框架會自動找到符合條件的對象。
那么再來說說contract的好處。松耦合網址給了一個例子解釋什么是緊耦合以及Contract接口為何能夠松耦合。先來看看緊耦合的代碼:復制代碼 代碼如下:
php namespace App/Orders;
class Repository {
/**
* The cache.
*/
protected $cache;
/**
* Create a new repository instance.
*
* @param /SomePackage/Cache/Memcached $cache
* @return void
*/
public function __construct(/SomePackage/Cache/Memcached $cache)
{
$this- cache = $cache;
}
/**
* Retrieve an Order by ID.
*
* @param int $id
* @return Order
*/
public function find($id)
{
if ($this- cache- has($id))
{
//
}
}
}
可以看到構造函數中注入了一個詳細的緩存實現 /SomePackage/Cache/Memcached ,如果換Redis作為緩存服務器或者更改了api方法,就需要修改,而如果項目很大,你不知道還有多少地方需要修改。那么,Contract接口是如何解決這個問題的?請看代碼:復制代碼 代碼如下:
php namespace App/Orders;
use Illuminate/Contracts/Cache/Repository as Cache;
class Repository {
/**
* Create a new repository instance.
*
* @param Cache $cache
* @return void
*/
public function __construct(Cache $cache)
{
$this- cache = $cache;
}
}
注意,緩存實現我們使用了一個接口,也就是contract,Illuminate/Contracts/Cache/Repository,因為它只是接口,不需要關心背后是memcache還是redis。簡單性如果所有服務都使用接口定義,就可以很簡單的決定一個服務需要的功能,更加容易維護和擴展,并且contract接口還能看作一個簡潔的文檔便于閱讀。PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人av网址| 国产精品福利小视频| 亚洲已满18点击进入在线看片| 91av在线播放视频| 92福利视频午夜1000合集在线观看| 亚洲国产一区二区三区在线观看| 色综合老司机第九色激情| 亚洲色图美腿丝袜| 91中文在线观看| 欧美视频不卡中文| 日韩欧美一区二区三区| 国产成人精品免费视频| 国内精品伊人久久| 美女啪啪无遮挡免费久久网站| 欧美中文字幕视频| 欧美中文在线免费| 欧美午夜www高清视频| 亚洲xxxx3d| 日韩av中文字幕在线播放| 国产精品白嫩美女在线观看| 欧美刺激性大交免费视频| 亚洲精品乱码久久久久久金桔影视| 日韩精品福利网站| 国产精品极品美女在线观看免费| 亚洲成人a**站| 成人欧美一区二区三区黑人| 日本欧美一级片| 国产日韩欧美中文| 在线免费看av不卡| 亚洲国产天堂久久国产91| 亚洲人成啪啪网站| 国产日韩在线观看av| 久久九九有精品国产23| 国产精品igao视频| 中文字幕在线视频日韩| 亚洲精品免费一区二区三区| 欧美日韩第一页| 一区二区三区无码高清视频| 成人欧美一区二区三区黑人孕妇| 成人性教育视频在线观看| 国产精品女主播视频| 久久夜色精品国产| 日本中文字幕不卡免费| 亚洲成人av资源网| 日韩精品有码在线观看| 精品人伦一区二区三区蜜桃网站| 亚洲天堂男人天堂| 国产精品亚洲欧美导航| 欧美日韩国产成人在线观看| 日韩欧美国产一区二区| 国产99久久精品一区二区 夜夜躁日日躁| 久久久久久av| 国产一区二区三区在线观看视频| 国内揄拍国内精品| 欧美在线视频免费播放| 欧美美女操人视频| 日韩中文在线视频| 成人在线观看视频网站| 亚洲精品欧美一区二区三区| 欧美激情乱人伦一区| 色多多国产成人永久免费网站| 最近2019中文字幕mv免费看| 亚洲色图欧美制服丝袜另类第一页| 国产精品嫩草视频| 日韩av网站电影| 国产成人精品电影| 粉嫩av一区二区三区免费野| 日韩美女写真福利在线观看| 久久影视电视剧免费网站清宫辞电视| 欧美成人性色生活仑片| 中文字幕日韩精品在线| 91高清视频在线免费观看| 中文字幕九色91在线| 在线不卡国产精品| 欧美激情欧美狂野欧美精品| 欧美日韩第一视频| 国产日韩精品一区二区| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲专区在线视频| 国产精品电影网站| 亚洲香蕉成视频在线观看| 久久精品国产亚洲精品2020| 亚洲精品欧美日韩专区| 国产日产欧美a一级在线| 欧美激情视频在线| 欧洲s码亚洲m码精品一区| 九色精品美女在线| 欧美在线观看视频| 国产亚洲欧美一区| 亚洲人成五月天| 欧美高清视频一区二区| 精品国产美女在线| 欧美日韩电影在线观看| 欧美黑人又粗大| 国产999精品视频| 成人午夜激情网| 亚洲欧美另类人妖| 亚洲第一色中文字幕| 日韩欧美有码在线| 国产精品美女视频网站| 午夜精品蜜臀一区二区三区免费| 中文字幕一精品亚洲无线一区| 亚洲精品网址在线观看| 国产精品稀缺呦系列在线| 国产精品v片在线观看不卡| 91久久久久久| 亚洲国产精品久久久久秋霞不卡| 国产精品美女免费| 日本不卡视频在线播放| 国产精品v片在线观看不卡| 精品在线观看国产| 亚洲第一免费播放区| 欧美午夜视频一区二区| 中文字幕精品一区久久久久| 亚洲系列中文字幕| 国产精品久久久久久久久久免费| 欧美中文字幕在线视频| 久久久999国产精品| 亚洲成avwww人| 555www成人网| 欧美一区亚洲一区| 欧美激情一级精品国产| 欧美成人第一页| 欧美高清不卡在线| 人九九综合九九宗合| 色青青草原桃花久久综合| 日韩免费视频在线观看| 91精品在线影院| 国产精品视频久久久| 国产成人精品久久| 久久人人爽亚洲精品天堂| 精品国产欧美一区二区五十路| 91理论片午午论夜理片久久| 欧美与欧洲交xxxx免费观看| 国产欧美日韩亚洲精品| 国产日产欧美a一级在线| 欧美一区视频在线| 久久久99久久精品女同性| 欧美一级免费视频| 日本一区二区在线播放| 国产亚洲欧洲黄色| 日本19禁啪啪免费观看www| 国产免费久久av| 国产在线精品自拍| 亚洲国产精品久久91精品| 亚洲性日韩精品一区二区| 日韩成人网免费视频| 亚洲一区二区三区sesese| 欧美精品18videosex性欧美| 欧美超级乱淫片喷水| 浅井舞香一区二区| 永久免费看mv网站入口亚洲| 欧美成人在线影院| 亚洲欧洲自拍偷拍| 亚洲一区二区三区四区视频| 国产精品自产拍高潮在线观看| 中文字幕久久亚洲| 久久九九全国免费精品观看| 亚洲欧美国产精品| 5566日本婷婷色中文字幕97| 国产欧美一区二区三区久久人妖| 欧美国产日韩视频| 在线亚洲男人天堂| 全亚洲最色的网站在线观看|