2013-02-13 118 views
0

我创建了一个应用程序/库/ fnmemcache.php一个新的文件,用:如何使用Laravel 3创建新的缓存驱动程序?

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

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

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

+0

对于Laravel还没有多少关注,但只有'driver'方法找不到驱动程序时才会调用'factory'方法。假设'driver'方法被首先调用,并且你已经'扩展'了,它应该可以工作。 – 2013-02-13 12:24:38

回答

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'); 
相关问题