我们需要在 laravel 应用程序中使用存储库。我们要创建两件重要的事情,一是存储库接口,另一是存储库类
我的疑问是为什么存储库接口和存储库类向服务提供商注册
我从服务提供商处删除了存储库界面和类
显示以下错误
“ 构建时无法实例化目标[App \ Repository \ UserInterface] ”
<?php
namespace App\Repository\user;
use Illuminate\Support\ServiceProvider;
class UserRepoServiceProvide extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
// $this->app->bind('App\Repository\UserInterface', 'App\Repository\user\UserRepository');
}
}
答案 0 :(得分:0)
Interface
类只是方法的定义(没有它们的主体),因此不能实例化。这意味着您无法执行new App\Repository\UserInterface()
。
在代码中的某处,您有一个方法(或也许是构造函数?),它具有UserInterface
依赖性,类似于
public function myMethod(UserInterface $repository) {
...
}
// or
public function __construct(UserInterface $repository) {
...
}
如果您删除绑定,Laravel将尝试实例化UserInterface
,这将导致您得到错误。
使用接口时,必须始终使用具体的类bind()
来实现它们。
我有一个问题,为什么您从ServiceProvider中删除绑定?