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 并没有硬性规定应用程序的结构。因此你可以根据自己的喜好自由的组织你的应用程序。