LWj*_*iOr 2 caching laravel-5 lumen
我对Laravel和Lumen很新,所以我的问题可能有点简单,但我找不到任何有用的答案.
流明版是5.1.
所以我尝试创建一个缓存支持的数据存储库.首先我想使用FileStore,然后我想转向更合适的一些.
我试着像这样注入Cache存储库:
<?php
namespace App\Repositories;
use Illuminate\Cache\Repository;
class DataRepository
{
private $cache;
public function __construct(Repository $cache)
{
$this->cache = $cache;
}
}
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎很简单.但是,当我尝试在我的控制器中使用此repo,并尝试将此repo注入其中时,在实例化期间,我收到以下错误:
BindingResolutionException in Container.php line 749:
Target [Illuminate\Contracts\Cache\Store] is not instantiable.
Run Code Online (Sandbox Code Playgroud)
我猜测存储库找不到匹配和可用的存储实现.当我尝试将Store绑定到\ Illumante\Cache\FileStore时,如下所示:
$this->app->bind(\Illuminate\Contracts\Cache\Store::class, \Illuminate\Cache\FileStore::class);
Run Code Online (Sandbox Code Playgroud)
我遇到了一种新的错误:
Unresolvable dependency resolving [Parameter #1 [ <required> $directory ]] in class Illuminate\Cache\FileStore
Run Code Online (Sandbox Code Playgroud)
我想我有一个更复杂的配置问题,所以我不想遍历依赖树.
在我的.env我有这些:
CACHE_DRIVER=file 和 SESSION_DRIVER=file
在Lumen中,我明确地启用了外观,DotEnv(以及我的数据存储库的口才).
Dotenv::load(__DIR__.'/../');
$app = new Laravel\Lumen\Application(
realpath(__DIR__.'/../')
);
$app->withFacades();
$app->withEloquent();
Run Code Online (Sandbox Code Playgroud)
我尝试添加cache.php配置.在bootstrap/app.php中,我添加$app->configure('cache');了以下配置使用它:
<?php
return [
'default' => env('CACHE_DRIVER', 'file'),
'stores' => [
'file' => [
'driver' => 'file',
'path' => storage_path('framework/cache'),
],
],
];
Run Code Online (Sandbox Code Playgroud)
你能帮帮我吗,我怎样才能正确引导缓存?
Lumen中的缓存实现注册为:
Illuminate\Contracts\Cache\Repository
Run Code Online (Sandbox Code Playgroud)
不
Illuminate\Cache\Repository
Run Code Online (Sandbox Code Playgroud)
因此,您可以将代码更改为:
<?php
namespace App\Repositories;
use Illuminate\Contracts\Cache\Repository;
class DataRepository
{
private $cache;
public function __construct(Repository $cache)
{
$this->cache = $cache;
}
}
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1219 次 |
| 最近记录: |