久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

Laravel學(xué)習(xí)教程之IOC容器的介紹與用例

最近在學(xué)習(xí)laravel,正好學(xué)習(xí)到了ioc容器,但發(fā)現(xiàn)網(wǎng)上這方面的資料較少,所以將自己學(xué)習(xí)的總結(jié)下,下面這篇文章主要給大家介紹了關(guān)于Laravel學(xué)習(xí)教程之IOC容器的相關(guān)資料,需要的朋友

前言

Laravel使用IoC(Inversion of Control,控制倒轉(zhuǎn),這是一個(gè)設(shè)計(jì)模式,可以先查看下百科)容器這個(gè)強(qiáng)有力的工具管理類依賴。依賴注入(也是一種設(shè)計(jì)模式,一般用于實(shí)現(xiàn)IoC)是一個(gè)不用編寫固定代碼來處理類之間依賴的方法,相反的,這些依賴是在運(yùn)行時(shí)注入的,這樣允許處理依賴時(shí)具有更大的靈活性。

理解 Laravel IoC容器是構(gòu)建強(qiáng)大應(yīng)用程序所必要的,也有助于Laravel 核心本身。下面話不多說了,來一起看看詳細(xì)的介紹吧。

基本用例

綁定一個(gè)類型到容器

IoC 容器有兩種方法來解決依賴關(guān)系:通過閉包回調(diào)或者自動(dòng)解析。首先,我們來探究一下閉包回調(diào)。首先,需要綁定一個(gè)“類型”到容器中:

App::bind('foo', function($app)
{
 return new FooBar;
});

從容器中取得一個(gè)類型

$value = App::make('foo');

當(dāng)執(zhí)行 App::make 方法,閉包函數(shù)被執(zhí)行并返回結(jié)果。

綁定一個(gè)”共享“類型到容器

有時(shí),你只想將綁定到容器的類型處理一次,然后接下來從容器中取得的都應(yīng)該是相同實(shí)例:

App::singleton('foo', function()
{
 return new FooBar;
});

綁定一個(gè)已經(jīng)存在的類型實(shí)例到容器

你也可以使用instance方法,將一個(gè)已經(jīng)存在的對(duì)象接口綁定到容器中:

$foo = new Foo;

App::instance('foo', $foo);

哪里去注冊(cè)綁定呢

IoC綁定,很像事件句柄或者路由過濾,通常在"bootstrap code(引導(dǎo)代碼)"之后完成。換句話說,它們?cè)谀愕膽?yīng)用程序準(zhǔn)備處理請(qǐng)求,也即是在一個(gè)路由或者控制器被實(shí)際執(zhí)行之前執(zhí)行。和其他引導(dǎo)代碼一樣,start文件通常作為IoC綁定注冊(cè)一種方法。另外,你可以創(chuàng)建一個(gè)app/ioc.php(文件名不一定一樣)文件,并在start文件中包含它。

如果你的應(yīng)用程序有很大量IoC綁定,或者你想根據(jù)不同的分類將IoC綁定分割到不同的文件,你可以嘗試在服務(wù)提供器(見下面)中進(jìn)行綁定

自動(dòng)解析

取得一個(gè)類

IoC容器足夠強(qiáng)大,在許多場(chǎng)景下不需要任何配置就能取得類。例如

class FooBar {

 public function __construct(Baz $baz)
 {
  $this->baz = $baz;
 }

}

$fooBar = App::make('FooBar');

注意:我們雖然沒有在容器中注冊(cè)FooBar類,容器仍然可以取得該類,甚至自動(dòng)注入Baz依賴!

當(dāng)某個(gè)類型沒有綁定到容器,IoC容器將使用 PHP 的反射工具來檢查類和讀取構(gòu)造器的類型提示。使用這些信息,容器可以自動(dòng)構(gòu)建類實(shí)例。

綁定一個(gè)接口實(shí)現(xiàn)

然而,在某些情況下,一個(gè)類可能依賴某個(gè)接口實(shí)現(xiàn),而不是一個(gè) “具體的類”。當(dāng)在這種情況下,App::bind方法必須通知容器注入哪個(gè)接口實(shí)現(xiàn):

App::bind('UserRepositoryInterface', 'DbUserRepository');

現(xiàn)在考慮下這個(gè)控制器:

class UserController extends BaseController {

 public function __construct(UserRepositoryInterface $users)
 {
  $this->users = $users;
 }

}

由于我們將 UserRepositoryInterface 綁定了具體類,DbUserRepository 在該控制器創(chuàng)建時(shí)將會(huì)被自動(dòng)注入到該控制器。

實(shí)際用例

Laravel 提供了幾個(gè)方法使用 IoC 容器增強(qiáng)應(yīng)用程序可擴(kuò)展性和可測(cè)試性。一個(gè)主要的例子是取得控制器。所有控制器都通過 IoC 容器取得,意味著可以在控制器構(gòu)造方法中對(duì)依賴的類型提示,它們將自動(dòng)被注入。

對(duì)控制器的依賴關(guān)系做類型提示

class OrderController extends BaseController {

 public function __construct(OrderRepository $orders)
 {
  $this->orders = $orders;
 }

 public function getIndex()
 {
  $all = $this->orders->all();

  return View::make('orders', compact('all'));
 }

}

在這個(gè)例子中,OrderRepository 將會(huì)自動(dòng)注入到控制器。意味著當(dāng) 單元測(cè)試 模擬請(qǐng)求時(shí),OrderRepository 將會(huì)綁定到容器以及注入到控制器中,允許無痛與數(shù)據(jù)庫層交互。

IoC 使用的其他例子

【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過測(cè)試外,其他素材未做測(cè)試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途。如損害你的權(quán)益請(qǐng)聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

下面小編就為大家分享一篇laravel ORM 只開啟created_at的幾種方法總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要給大家介紹了如何通過源碼解析Laravel的依賴注入的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著
這篇文章主要給大家介紹了關(guān)于Laravel中unique和exists驗(yàn)證規(guī)則的優(yōu)化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面
最近在使用laravel5.5,利用其實(shí)現(xiàn)了一個(gè)功能,下面分享給大家,這篇文章主要給大家介紹了關(guān)于Laravel 5.5基于內(nèi)置的Auth模塊如何實(shí)現(xiàn)前后臺(tái)登陸的相關(guān)資料,文中通過示例代碼介紹的非
laravel 的隊(duì)列服務(wù)對(duì)各種不同的后臺(tái)隊(duì)列服務(wù)提供了統(tǒng)一的 API,下面這篇文章通過源碼分析給大家介紹了關(guān)于 Laravel 重復(fù)執(zhí)行同一個(gè)隊(duì)列任務(wù)的原因,文中通過示例代碼介紹的非常詳細(xì)
這篇文章主要給大家介紹了關(guān)于 Laravel Redis 多個(gè)進(jìn)程同時(shí)取隊(duì)列問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友下面來
主站蜘蛛池模板: 日韩在线免费视频 | 91精品国产综合久久小仙女图片 | 成人免费看电影 | 羞羞涩涩在线观看 | 一级毛片大全免费播放 | 国产精品久久久久久久毛片 | 欧美国产一区二区 | 精品国产一区二区三区性色av | www.久久久久久久久 | 日韩在线视频一区二区三区 | 日韩欧美一区二区三区免费观看 | 欧美日韩一区二区三区不卡视频 | 国产电影一区二区 | www.久久.com | 性国产丰满麻豆videosex | 亚洲第一区久久 | 中文字字幕一区二区三区四区五区 | 在线黄色影院 | 国产91亚洲精品 | 91精品久久久久久久久 | 日韩成人影院 | 国产在线二区 | 91av视频在线免费观看 | 国产精品高潮呻吟 | 99久久久国产精品 | 毛片一区二区三区 | 激情av网站 | 九九综合九九 | 亚洲欧美中文字幕在线观看 | 免费黄色a级毛片 | 久久久免费在线观看 | 国产日韩精品视频 | 成年人精品视频在线观看 | 亚洲精品福利在线 | 日本亚洲一区二区 | 精品久久久网站 | 人人九九 | 国产精品二区三区 | 成人精品一区二区三区 | 日批免费看 | 在线一区观看 |