這篇文章主要介紹laravel中的Contracts, ServiceContainer, ServiceProvider, Facades關(guān)系是什么,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)專注于雙遼企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),成都商城網(wǎng)站開發(fā)。雙遼網(wǎng)站建設(shè)公司,為雙遼等地區(qū)提供建站服務(wù)。全流程按需定制制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
Contracts
, ServiceContainer
, ServiceProvider
, Facades
1.Contracts
合同,契約,也就是接口,定義一些規(guī)則,每個(gè)實(shí)現(xiàn)此接口的都要實(shí)現(xiàn)里面的方法;
2.ServiceContainer
,實(shí)現(xiàn)Contracts
,具體的邏輯實(shí)現(xiàn);
3.ServiceProvider
, serviceContainer
的服務(wù)提供者,返回ServiceContainer
的實(shí)例化,供其他地方使用,可以把它加入到app/config
的provider
中,會(huì)被自動(dòng)注冊(cè)到容器中;
4.Facades
, 簡(jiǎn)化ServiceProvider
的調(diào)用方式,而且可以靜態(tài)調(diào)用ServiceContainer
中的方法;
實(shí)現(xiàn)
Contracts
接口可以寫或不寫,這里就不定義了;
定義一個(gè)ServiceContainer
,實(shí)現(xiàn)具體的功能
namespace App\Helper; class MyFoo { public function add($a, $b) { return $a+$b; } }
定義一個(gè)ServiceProvider
供其他地方使用ServiceContain
<?php namespace App\Providers; use App\Helper\MyFoo; //要服務(wù)的Container use Illuminate\Support\ServiceProvider; use App; class MyFooServiceProvider extends ServiceProvider { public function boot(){} //注冊(cè)到容器中 public function register() { //可以這么綁定,這需要use App; App::bind("myfoo",function(){ return new MyFoo(); }); //也可以這么綁定 $this->app->bind("myfoo", function(){ return new MyFoo(); }); } }
在app/config.php
中的providers
數(shù)組中加入ServiceProvider
,讓系統(tǒng)自動(dòng)注冊(cè)
App\Providers\MyFooServiceProvider::class
,
這時(shí)候就可以使用了,假設(shè)在控制器中使用
public function two($id=null) { //從系統(tǒng)容器中獲取實(shí)例化對(duì)象 $myfoo = App::make("myfoo"); echo $myfoo->add(1,2); }
這樣太麻煩,還需要用make
來(lái)獲取對(duì)象,為了簡(jiǎn)便,就可以使用門面功能,定義門面MyFooFacade
namespace App\Facades; use Illuminate\Support\Facades\Facade; class MyFooFacade extends Facade { protected static function getFacadeAccessor() { //這里返回的是ServiceProvider中注冊(cè)時(shí),定義的字符串 return 'myfoo'; } }
在控制器里就可以直接調(diào)用了
use App\Facades\MyFooFacade; public function two($id=null) { //從系統(tǒng)容器中獲取實(shí)例化對(duì)象 $myfoo = App::make("myfoo"); echo $myfoo->add(1,2); //使用門面 echo MyFooFacade::add(4,5); }
以上是“l(fā)aravel中的Contracts, ServiceContainer, ServiceProvider, Facades關(guān)系是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
本文標(biāo)題:laravel中的Contracts,ServiceContainer,ServiceProvider,Facades關(guān)系是什么
鏈接地址:http://vcdvsql.cn/article42/jhjsec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、品牌網(wǎng)站制作、外貿(mào)建站、面包屑導(dǎo)航、網(wǎng)站制作、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)