基于服務(wù)容器的擴展

2018-02-24 15:52 更新

幾乎每個 Laravel 框架引入的服務(wù)提供者都會綁定對象到服務(wù)容器中。你可以在 config/app.php 配置文件中找到應(yīng)用程序的服務(wù)提供者清單。如果你有時間,你應(yīng)該瀏覽過這里面每一個提供者的源代碼。通過這樣做,你將會更了解每一個提供者添加什么到框架,以及用什么鍵值來綁定各種服務(wù)到服務(wù)容器。

例如, HashServiceProvider 綁定 hash 做為鍵值到服務(wù)容器,它將解析成 Illuminate\Hashing\BcryptHasher 實例。你可以在應(yīng)用程序中覆寫這個 IoC 綁定,輕松地擴展并覆寫這個類。例如:

<?php namespace App\Providers;

class SnappyHashProvider extends \Illuminate\Hashing\HashServiceProvider {

    public function boot()
    {
        parent::boot();

        $this->app->bindShared('hash', function()
        {
            return new \Snappy\Hashing\ScryptHasher;
        });
    }

}

要注意的是這個類擴展 HashServiceProvider,不是默認的 ServiceProvider 基礎(chǔ)類。當(dāng)你擴展了服務(wù)提供者,在 config/app.php 配置文件把 HashServiceProvider 換成你擴展的提供者名稱。

這是被綁定在容器的所有核心類的一般擴展方法。實際上,每個以這種方式綁定在容器的核心類都可以被覆寫。再次強調(diào),看過每個框架引入的服務(wù)提供者將會使你熟悉:每個類被綁在容器的哪里、它們是用什么鍵值綁定。這是個好方法可以了解更多關(guān)于 Laravel 如何結(jié)合它們。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號