在Laravel 5中将缓存注入为依赖项

时间:2015-03-10 10:46:45

标签: caching laravel-5

我想摆脱使用Cache Facade并使用构造函数将其注入我的控制器,如下所示:

use Illuminate\Contracts\Cache\Store;

...

protected $cache;

public function __construct(Store $cache)
{
    $this->cache = $cache;
}

然后我在AppServiceProvider.php中使用app绑定。

public function register()
{
    $this->app->bind(
        'Illuminate\Contracts\Cache\Store',
        'Illuminate\Cache\FileStore'
    );
}

但是,我收到以下错误,因为FileStore.php需要构造函数中的$ files和$ directory参数。

Container.php第872行中的

BindingResolutionException: 不可解析的依赖关系解析类Illuminate \ Cache \ FileStore中的[Parameter#1 [$ directory]]

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:14)

如果你想使用等效的Cache外观,你应该注入Illuminate\Cache\Repository

use Illuminate\Cache\Repository as CacheRepository;

// ...

protected $cache;

public function __construct(CacheRepository $cache)
{
    $this->cache = $cache;
}

您可以在文档中查找外观的基础类:

Facades - Facade Class Reference

相关问题