阅读(1856) (13)

Laravel 8 注册驱动

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

在 Laravel 注册一个自定义的缓存驱动,我们需要在 Cache 门面上使用 extend 方法。 对 Cache::extend 的调用可以在新的 Laravel 应用程序中自带的 App\Providers\AppServiceProviderboot 方法中完成,或者你也可以自己创建服务提供者来存放扩展,只是不要忘记在 config/app.php 的 provider 的数组中注册服务提供者:

<?php

namespace App\Providers;

use App\Extensions\MongoStore;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\ServiceProvider;

class CacheServiceProvider extends ServiceProvider
{
    /**
     * 注册应用服务
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * 引导应用服务
     *
     * @return void
     */
    public function boot()
    {
        Cache::extend('mongo', function ($app) {
            return Cache::repository(new MongoStore);
        });
    }
}

传递给 extend 方法的第一个参数是驱动程序的名称。 该值对应 config/cache.php 配置文件中的 driver 选项。 第二个参数是返回 Illuminate\Cache\Repository 实例的闭包。该闭包中被传入一个 $app 的实例, 也就是 服务容器 的一个实例。

一旦你的扩展被注册以后,只需要更新配置文件 config/cache.phpdriver 选项作为自定义扩展名称即可。