我想摆脱使用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]]
知道如何解决这个问题吗?
答案 0 :(得分:14)
如果你想使用等效的Cache
外观,你应该注入Illuminate\Cache\Repository
:
use Illuminate\Cache\Repository as CacheRepository;
// ...
protected $cache;
public function __construct(CacheRepository $cache)
{
$this->cache = $cache;
}
您可以在文档中查找外观的基础类: