我正在为Laravel开发一个包,我收到一个错误,我无法弄清楚如何修复:
传递给Cartalini \ Drayman \ Drayman :: __ construct()的参数1必须是Cartalini \ Drayman \ Repositories \ UserRepositoryInterface的实例,没有给出,在/ Applications / MAMP / htdocs / l4 / app / controllers / HomeController中调用。 php在第10行并定义了
这是我的代码......
namespace Cartalini\Drayman;
use Cartalini\Drayman\Repositories\UserRepositoryInterface;
class Drayman
{
protected $user;
public function __construct(UserRepositoryInterface $user)
{
$this->user = $user;
}
public function deliverBeer()
{
return $this->user->all();
}
}
... UserRepository
namespace Cartalini\Drayman\Repositories;
class UserRepository implements UserRepositoryInterface
{
public function all()
{
return User::all();
}
}
... UserRepositoryInterface
namespace Cartalini\Drayman\Repositories;
interface UserRepositoryInterface
{
public function all();
}
服务提供商......
public function register()
{
$this->app->bind('Cartalini\Drayman\Repositories\UserRepositoryInterface', 'Cartalini\Drayman\Repositories\UserRepository');
}
最后我的控制器......
use Cartalini\Drayman\Drayman as Drayman;
class HomeController extends BaseController
{
public function showWelcome()
{
$drayman = new Drayman;
return $drayman->deliverBeer();
}
}
有人可以帮我调试吗?
答案 0 :(得分:2)
在showWelcome
函数中:
public function showWelcome()
{
// need to pass a UserRepositoryInterface object here:
$drayman = new Drayman;
return $drayman->deliverBeer();
}
由于您未传递代码所需的UserRepositoryInterface
对象,因此您会收到该错误。
答案 1 :(得分:0)
可能有点晚了,但我遇到了同样的问题,原因是我的具体类没有实现它对应的接口类。实施后,一切顺利。
尽管您正确地实现了它,但这个错误可能有几个原因,其中一个是我所描述的。