緩存

2018-02-24 15:52 更新

為了擴展 Laravel 緩存功能,我們將會使用 CacheManager 的 extend 方法,這方法可以用來綁定一個自定義驅(qū)動解析器到管理者,并且是全部的管理者類通用的。例如,注冊一個新的緩存驅(qū)動名為「mongo」,我們將執(zhí)行以下操作:

Cache::extend('mongo', function($app)
{
    return Cache::repository(new MongoStore);
});

傳遞到 extend 方法的第一個參數(shù)是驅(qū)動的名稱。這將會對應(yīng)到你的 config/cache.php 配置文件里的 driver 選項。第二個參數(shù)是個應(yīng)該返回 Illuminate\Cache\Repository 實例的閉包。 $app 將會被傳遞到閉包,它是 Illuminate\Foundation\Application 和服務(wù)容器的實例。

Cache::extend 的調(diào)用可以在新的 Laravel 應(yīng)用程序默認(rèn)附帶的 App\Providers\AppServiceProvider 的 boot 方法中完成,或者你可以建立自己的服務(wù)提供者來放置這個擴展 - 記得不要忘記在 config/app.php 的提供者數(shù)組注冊提供者。

要建立自定義緩存驅(qū)動,首先需要實現(xiàn) Illuminate\Contracts\Cache\Store contract 。所以,我們的 MongoDB 緩存實現(xiàn)將會看起來像這樣:

class MongoStore implements Illuminate\Contracts\Cache\Store {

    public function get($key) {}
    public function put($key, $value, $minutes) {}
    public function increment($key, $value = 1) {}
    public function decrement($key, $value = 1) {}
    public function forever($key, $value) {}
    public function forget($key) {}
    public function flush() {}

}

我們只需要使用 MongoDB 連接來實現(xiàn)這些方法。當(dāng)實現(xiàn)完成,就可以完成自定義驅(qū)動注冊:

Cache::extend('mongo', function($app)
{
    return Cache::repository(new MongoStore);
});

如果你正在考慮要把自定義緩存驅(qū)動代碼放在哪里,請考慮把它放上 Packagist !或者,你可以在 app 的目錄中建立 Extensions 命名空間。記得 Laravel 沒有嚴(yán)格的應(yīng)用程序架構(gòu),你可以依照喜好自由的組織應(yīng)用程序。

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號