亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

laravel中的Contracts, ServiceContainer, ServiceProvider, Facades關系是什么

發布時間:2021-01-18 10:07:12 來源:億速云 閱讀:325 作者:小新 欄目:編程語言

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

Contracts, ServiceContainer, ServiceProvider, Facades

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

2.ServiceContainer,實現Contracts,具體的邏輯實現;

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

4.Facades, 簡化ServiceProvider的調用方式,而且可以靜態調用ServiceContainer中的方法;

實現

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

定義一個ServiceContainer,實現具體的功能

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

定義一個ServiceProvider供其他地方使用ServiceContain

<?php
namespace App\Providers;
use App\Helper\MyFoo; //要服務的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數組中加入ServiceProvider,讓系統自動注冊

App\Providers\MyFooServiceProvider::class,

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

public function two($id=null)
{
    //從系統容器中獲取實例化對象
    $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';
    }
}

在控制器里就可以直接調用了

use App\Facades\MyFooFacade;
public function two($id=null)
{
    //從系統容器中獲取實例化對象
    $myfoo = App::make("myfoo");
    echo $myfoo->add(1,2);
    //使用門面
    echo MyFooFacade::add(4,5);
}

以上是“laravel中的Contracts, ServiceContainer, ServiceProvider, Facades關系是什么”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昆山市| 灵台县| 宣城市| 正阳县| 祁东县| 辽阳县| 屏东县| 鄢陵县| 晋州市| 滨州市| 独山县| 绥化市| 敦煌市| 汾西县| 台州市| 邹平县| 澄江县| 尼木县| 金川县| 宁强县| 习水县| 南充市| 阿图什市| 松阳县| 海伦市| 林甸县| 汝阳县| 诸暨市| 额敏县| 南宁市| 抚顺市| 彝良县| 高密市| 铜鼓县| 土默特右旗| 阿图什市| 易门县| 宁河县| 通山县| 渝北区| 白水县|