緩載提供者

2018-02-24 15:51 更新

若你的提供者僅僅用于綁定注冊到服務(wù)容器,你可以選擇延緩其注冊,直到真正需要其中注冊的綁定才加載。延緩像這樣的提供者加載可增進應(yīng)用程序的性能,因為這樣就不用每個請求都從文件系統(tǒng)中將其加載。

要延緩提供者加載,將 defer 性質(zhì)設(shè)為 true,并定義一個 provides 方法。 provides 方法應(yīng)返回提供者所注冊的服務(wù)容器綁定。

<?php namespace App\Providers;

use Riak\Connection;
use Illuminate\Support\ServiceProvider;

class RiakServiceProvider extends ServiceProvider {

    /**
     * 指定是否延緩提供者加載。
     *
     * @var bool
     */
    protected $defer = true;

    /**
     * 注冊服務(wù)提供者。
     *
     * @return void
     */
    public function register()
    {
        $this->app->singleton('Riak\Contracts\Connection', function($app)
        {
            return new Connection($app['config']['riak']);
        });
    }

    /**
     * 取得提供者所提供的服務(wù)。
     *
     * @return array
     */
    public function provides()
    {
        return ['Riak\Contracts\Connection'];
    }

}

Laravel 編譯并保存所有由延緩服務(wù)提供者所提供的服務(wù)清單,以及其服務(wù)提供者的類名稱。只有在當(dāng)你嘗試解析其中的服務(wù)時, Laravel 才會加載服務(wù)提供者。

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號