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

Injecting cache as a dependency in Laravel 5

我不想使用 Cache facade,而是使用构造函数将其注入到我的控制器中,如下所示:

use Illuminate\Contracts\Cache\Store;

...

protected $cache;

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

然后我在 AppServiceProvider.php 中使用应用程序绑定。

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

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

第 872 行 Container.php 中的 BindingResolutionException: class Illuminate\Cache\FileStore

中无法解析的依赖项解析 [Parameter #1 [ $directory ]]

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

如果你想使用 Cache 门面的等价物,你应该注入 Illuminate\Cache\Repository

use Illuminate\Cache\Repository as CacheRepository;

// ...

protected $cache;

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

您可以在文档中查找底层 类 外观:

Facades - Facade Class Reference