W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
為了擴展 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)用程序。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: