我在application / libraries / fnmemcache.php中创建了一个新文件,其中包含:
namespace Laravel\Cache\Drivers;
class FNMemcache extends Sectionable {
// ...
}
当我在cache.php配置文件中设置“fnmemcache”驱动程序时,它不会检测到我的新缓存驱动程序。我也试过在start.php中使用方法Cache::extend()
,但它是一样的。
看一下laravel目录中的cache.php文件(工厂方法),似乎它永远不会工作,因为它有一个带有预定义缓存驱动程序的开关,如果我们没有指定其中一个,则抛出异常。 这很容易修改核心,但当然我不想这样做。
答案 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');