阅读(1040) (8)

Laravel 8 编写驱动

2021-06-30 17:14:50 更新

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

<?php

namespace AppExtensions;

use IlluminateContractsCacheStore;

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 的连接来实现这些方法。 关于如何实现这些方法中的实例,可以通过阅读源代码 IlluminateCacheMemcachedStore 来加以理解。 一旦我们完成契约接口的实现,我们就可以通过以下的示例来完成自定义驱动的注册了。

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

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