我是Laravel和Lumen的新手,所以我的问题可能有点简单,但是我找不到任何有用的答案。
流明版本是5.1
。
因此,我尝试创建一个受缓存支持的数据存储库。首先,我想使用FileStore,然后再转到更合适的位置。
我试图像这样注入缓存存储库:
<?php
namespace App\Repositories;
use Illuminate\Cache\Repository;
class DataRepository
{
private $cache;
public function __construct(Repository $cache)
{
$this->cache = $cache;
}
}
对我来说,这似乎很简单。但是,当我尝试在控制器中使用此存储库并尝试将其插入到实例中时,出现以下错误:
BindingResolutionException in Container.php line 749:
Target [Illuminate\Contracts\Cache\Store] is not instantiable.
我猜想存储库找不到匹配的和可用的商店实现。当我尝试像这样将存储绑定到\ Illumante \ Cache \ FileStore时:
$this->app->bind(\Illuminate\Contracts\Cache\Store::class, \Illuminate\Cache\FileStore::class);
我收到了一种新的错误:
Unresolvable dependency resolving [Parameter #1 [ <required> $directory ]] in class Illuminate\Cache\FileStore
我想我有一个更复杂的配置问题,所以我不想遍历依赖树。
在我的.env
我有这些:
CACHE_DRIVER=file
和 SESSION_DRIVER=file
在Lumen中,我明确启用了Facades,DotEnv(以及对我的数据存储库的雄辩)。
Dotenv::load(__DIR__.'/../');
$app = new Laravel\Lumen\Application(
realpath(__DIR__.'/../')
);
$app->withFacades();
$app->withEloquent();
我试图添加一个cache.php配置。在bootstrap / app.php中,我添加$app->configure('cache');
了以下配置使用它:
<?php
return [
'default' => env('CACHE_DRIVER', 'file'),
'stores' => [
'file' => [
'driver' => 'file',
'path' => storage_path('framework/cache'),
],
],
];
您能帮我吗,如何正确引导缓存?
流明中的缓存实现注册为:
Illuminate\Contracts\Cache\Repository
不是
Illuminate\Cache\Repository
因此,您可以将代码更改为:
<?php
namespace App\Repositories;
use Illuminate\Contracts\Cache\Repository;
class DataRepository
{
private $cache;
public function __construct(Repository $cache)
{
$this->cache = $cache;
}
}
PS您不需要配置缓存,因为Lumen会自动配置任何缓存配置。
但是,如果您仍然想使用Illuminate\Cache\Repository
,则可以先将其绑定到您的ServiceProvider
或bootstrap/app.php
文件中:
use Illuminate\Cache\Repository as CacheImplementation;
use Illuminate\Contracts\Cache\Repository as CacheContract;
$app->singleton(CacheImplementation::class, CacheContract::class);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句