gpt4 book ai didi

Laravel 创建服务提供者参数 1 必须实现服务提供者

转载 作者:行者123 更新时间:2023-12-02 12:18:01 24 4
gpt4 key购买 nike

您好,我正在创建一个自定义缓存服务类,它将从我的存储库中抽象出缓存层。但是,当我收到此错误时,我遇到了一些麻烦:

传递给 Task::__construct() 的参数 1 必须实现接口(interface) MyApp\Cache\CacheInterface,未给出,在/var/www/app/vendor/laravel/framework/src/Illuminate/Database/Eloquent 中调用/Model.php 第 792 行并定义

我的类(class)如下:

<?php namespace MyApp\Cache;

use Illuminate\Cache\CacheManager;

class CacheService {

/**
* @var Illuminate\Cache\CacheManager
*/
protected $cache;

/**
* @var integer
*/
protected $minutes;

/**
* Construct
*
* @param Illuminate\Cache\CacheManager $cache
* @param string $tag
* @param integer $minutes
*/
public function __construct(CacheManager $cache, $minutes = 60)
{
$this->cache = $cache;
$this->tag = $tag;
$this->minutes = $minutes;
}

/**
* Get
*
* @param string $key
* @return mixed
*/
public function get($key)
{
return $this->cache->tags($this->tag)->get($key);
}

/**
* Put
*
* @param string $key
* @param mixed $value
* @param integer $minutes
* @return mixed
*/
public function put($key, $value, $minutes = null)
{
if( is_null($minutes) )
{
$minutes = $this->minutes;
}

return $this->cache->tags($this->tag)->put($key, $value, $minutes);
}

/**
* Has
*
* @param string $key
* @return bool
*/
public function has($key)
{
return $this->cache->tags($this->tag)->has($key);
}

}

在我的模型中,我有以下内容;

<?php
use Abstracts\Model as AbstractModel;
use Illuminate\Support\Collection;
use CMS\APIv2\Objects\Entity;
use MyApp/Cache\CacheInterface;

class SprintTask extends AbstractModel
{


/**
* @var CacheInterface
*/
protected $cache;

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


public static function scopegetAssignedSprint($id) {
$key = md5('id.'.$id.get_class());

if($this->cache->has($key))
{
return $this->cache->get($key);
}

$user = static::where('uid', $id)->lists('sprint_id');

$this->cache->put($key, $user);

return $user;
}

我有一个缓存服务提供商,如下;

<?php
namespace MyApp\Cache;

use MyApp\Cache\CacheInterface;
use Illuminate\Support\ServiceProvider;

class CacheServiceProvider extends ServiceProvider
{

/**
* Indicates if loading of the provider is deferred.
*
* @var bool
*/
protected $defer = false;

/**
* Register
*/
public function register()
{

$this->app->bind
('MyApp\Cache\CacheInterface',
'MyApp\Cache\CacheService');

}


}

有什么想法可以正确设置此服务提供程序以在任何模式/ Controller /存储库等中使用?

最佳答案

您是否尝试过这样做:

<?php
namespace MyApp\Cache;

use MyApp\Cache\CacheInterface;
use Illuminate\Support\ServiceProvider;
use Illuminate\Cache\CacheManager;

class CacheServiceProvider extends ServiceProvider
{

/**
* Indicates if loading of the provider is deferred.
*
* @var bool
*/
protected $defer = false;

/**
* Register
*/
public function register()
{

$this->app->bind('MyApp\Cache\CacheInterface',function(){
return new CacheService(CacheManager $cache);
});

}
}

我刚刚根据旅行评论更新了它

关于Laravel 创建服务提供者参数 1 必须实现服务提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31621232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com