欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

laravel中的Contracts,ServiceContainer,ServiceProvider,Facades關(guān)系是什么

這篇文章主要介紹laravel中的Contracts, ServiceContainer, ServiceProvider, Facades關(guān)系是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)專注于雙遼企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),成都商城網(wǎng)站開發(fā)。雙遼網(wǎng)站建設(shè)公司,為雙遼等地區(qū)提供建站服務(wù)。全流程按需定制制作,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

Contracts, ServiceContainer, ServiceProvider, Facades

1.Contracts 合同,契約,也就是接口,定義一些規(guī)則,每個實現(xiàn)此接口的都要實現(xiàn)里面的方法;

2.ServiceContainer,實現(xiàn)Contracts,具體的邏輯實現(xiàn);

3.ServiceProviderserviceContainer的服務(wù)提供者,返回ServiceContainer的實例化,供其他地方使用,可以把它加入到app/configprovider中,會被自動注冊到容器中;

4.Facades, 簡化ServiceProvider的調(diào)用方式,而且可以靜態(tài)調(diào)用ServiceContainer中的方法;

實現(xiàn)

Contracts接口可以寫或不寫,這里就不定義了;

定義一個ServiceContainer,實現(xiàn)具體的功能

namespace App\Helper;
class MyFoo
{
    public function add($a, $b)
    {
        return $a+$b;
    }
}

定義一個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(){}
    //注冊到容器中
    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)自動注冊

App\Providers\MyFooServiceProvider::class,

這時候就可以使用了,假設(shè)在控制器中使用

public function two($id=null)
{
    //從系統(tǒng)容器中獲取實例化對象
    $myfoo = App::make("myfoo");
    echo $myfoo->add(1,2);
}

這樣太麻煩,還需要用make來獲取對象,為了簡便,就可以使用門面功能,定義門面MyFooFacade

namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class MyFooFacade extends Facade
{
    protected static function getFacadeAccessor()
    {
        //這里返回的是ServiceProvider中注冊時,定義的字符串
        return 'myfoo';
    }
}

在控制器里就可以直接調(diào)用了

use App\Facades\MyFooFacade;
public function two($id=null)
{
    //從系統(tǒng)容器中獲取實例化對象
    $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)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

本文標題:laravel中的Contracts,ServiceContainer,ServiceProvider,Facades關(guān)系是什么
鏈接地址:http://chinadenli.net/article42/jhjsec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗品牌網(wǎng)站制作外貿(mào)建站面包屑導(dǎo)航網(wǎng)站制作關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)