codecamp

缓存

为了扩展 Laravel 缓存功能,我们将会使用 CacheManager 的 extend 方法,这方法可以用来绑定一个自定义驱动解析器到管理者,并且是全部的管理者类通用的。例如,注册一个新的缓存驱动名为「mongo」,我们将执行以下操作:

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

传递到 extend 方法的第一个参数是驱动的名称。这将会对应到你的 config/cache.php 配置文件里的 driver 选项。第二个参数是个应该返回 Illuminate\Cache\Repository 实例的闭包。 $app 将会被传递到闭包,它是 Illuminate\Foundation\Application 和服务容器的实例。

Cache::extend 的调用可以在新的 Laravel 应用程序默认附带的 App\Providers\AppServiceProvider 的 boot 方法中完成,或者你可以建立自己的服务提供者来放置这个扩展 - 记得不要忘记在 config/app.php 的提供者数组注册提供者。

要建立自定义缓存驱动,首先需要实现 Illuminate\Contracts\Cache\Store contract 。所以,我们的 MongoDB 缓存实现将会看起来像这样:

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 连接来实现这些方法。当实现完成,就可以完成自定义驱动注册:

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

如果你正在考虑要把自定义缓存驱动代码放在哪里,请考虑把它放上 Packagist !或者,你可以在 app 的目录中建立 Extensions 命名空间。记得 Laravel 没有严格的应用程序架构,你可以依照喜好自由的组织应用程序。

管理者和工厂
Session
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

环境配置

系统服务

哈希

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }