0

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

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

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

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

4

1 回答 1

0

首先,如果您的驱动程序位于application/libraries您不应该在Laravel\Cache\Drivers. 所以你应该有class FNMemcache extends Laravel\Cache\Drivers\Sectionable

你提到了Cache::extend()方法,这是你需要挂钩的。看看这条线,看看它如何首先检查任何现有的注册商?这是您注册自己的驱动程序的方式。

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

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

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

Cache::driver('fnmemcache')->set('key', 'value');
于 2013-04-11T13:00:09.767 回答