codecamp

Laravel 8 编写驱动

要创建自定义的缓存驱动,首先需要实现 Illuminate\Contracts\Cache\Store contract 契约。因此, MongoDB 缓存实现看起来就像是这样:

<?php

namespace App\Extensions;

use Illuminate\Contracts\Cache\Store;

class MongoStore implements Store
{
    public function get($key) {}
    public function many(array $keys) {}
    public function put($key, $value, $seconds) {}
    public function putMany(array $values, $seconds) {}
    public function increment($key, $value = 1) {}
    public function decrement($key, $value = 1) {}
    public function forever($key, $value) {}
    public function forget($key) {}
    public function flush() {}
    public function getPrefix() {}
}

我们只需要 MongoDB 的连接来实现这些方法。 关于如何实现这些方法中的实例,可以通过阅读源代码 Illuminate\Cache\MemcachedStore 来加以理解。 一旦我们完成契约接口的实现,我们就可以通过以下的示例来完成自定义驱动的注册了。

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

技巧:如果你不知道该将缓存驱动的代码放在什么地方,你可以在你的 app 文件夹下创建一个 Extensions 的命名空间。 值得注意的是,Laravel 并没有硬性规定应用程序的结构。因此你可以根据自己的喜好自由的组织你的应用程序。


Laravel 8 添加自定义缓存驱动
Laravel 8 注册驱动
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Laravel 8 入门指南

Laravel 8 基础功能

Laravel 8 前端开发

Laravel 8 安全相关

Laravel 8 综合话题

数据库

Eloquent ORM

测试相关

官方拓展包

关闭

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; }