2013-02-13 55 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'); 
相關問題