如何使用Laravel 3创建新的缓存驱动程序?

时间:2013-02-13 11:57:57

标签: php caching laravel laravel-3

我在application / libraries / fnmemcache.php中创建了一个新文件,其中包含:

namespace Laravel\Cache\Drivers;
class FNMemcache extends Sectionable {
   // ...
}

当我在cache.php配置文件中设置“fnmemcache”驱动程序时,它不会检测到我的新缓存驱动程序。我也试过在start.php中使用方法Cache::extend(),但它是一样的。

看一下laravel目录中的cache.php文件(工厂方法),似乎它永远不会工作,因为它有一个带有预定义缓存驱动程序的开关,如果我们没有指定其中一个,则抛出异常。 这很容易修改核心,但当然我不想这样做。

1 个答案:

答案 0 :(得分:0)

首先,如果您的驱动程序位于application/libraries,则不应将其命名为Laravel\Cache\Drivers。所以你应该改为class FNMemcache extends Laravel\Cache\Drivers\Sectionable

您提到了Cache::extend()方法,这是您需要加入的方法。查看this line,了解它如何首先检查现有的注册商?这是您注册自己的驱动程序的方式。

Cache::extend()方法实际上会添加您的驱动程序。你的闭包应该返回你的驱动程序的实例。

Cache::extend('fnmemcache', function()
{
    return new FNMemcache;
});

然后,您可以设置配置,或在运行时使用驱动程序。

Cache::driver('fnmemcache')->set('key', 'value');