W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
為了擴(kuò)展 Laravel 緩存功能,我們將會(huì)使用 CacheManager 的 extend 方法,這方法可以用來(lái)綁定一個(gè)自定義驅(qū)動(dòng)解析器到管理者,并且是全部的管理者類通用的。例如,注冊(cè)一個(gè)新的緩存驅(qū)動(dòng)名為「mongo」,我們將執(zhí)行以下操作:
Cache::extend('mongo', function($app)
{
return Cache::repository(new MongoStore);
});
傳遞到 extend 方法的第一個(gè)參數(shù)是驅(qū)動(dòng)的名稱。這將會(huì)對(duì)應(yīng)到你的 config/cache.php 配置文件里的 driver 選項(xiàng)。第二個(gè)參數(shù)是個(gè)應(yīng)該返回 Illuminate\Cache\Repository 實(shí)例的閉包。 $app 將會(huì)被傳遞到閉包,它是 Illuminate\Foundation\Application 和服務(wù)容器的實(shí)例。
Cache::extend 的調(diào)用可以在新的 Laravel 應(yīng)用程序默認(rèn)附帶的 App\Providers\AppServiceProvider 的 boot 方法中完成,或者你可以建立自己的服務(wù)提供者來(lái)放置這個(gè)擴(kuò)展 - 記得不要忘記在 config/app.php 的提供者數(shù)組注冊(cè)提供者。
要建立自定義緩存驅(qū)動(dòng),首先需要實(shí)現(xiàn) Illuminate\Contracts\Cache\Store contract 。所以,我們的 MongoDB 緩存實(shí)現(xiàn)將會(huì)看起來(lái)像這樣:
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 連接來(lái)實(shí)現(xiàn)這些方法。當(dāng)實(shí)現(xiàn)完成,就可以完成自定義驅(qū)動(dòng)注冊(cè):
Cache::extend('mongo', function($app)
{
return Cache::repository(new MongoStore);
});
如果你正在考慮要把自定義緩存驅(qū)動(dòng)代碼放在哪里,請(qǐng)考慮把它放上 Packagist !或者,你可以在 app 的目錄中建立 Extensions 命名空間。記得 Laravel 沒(méi)有嚴(yán)格的應(yīng)用程序架構(gòu),你可以依照喜好自由的組織應(yīng)用程序。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: