Laravel-目标[App\Interfaces\Auth\AuthInterface]在生成时不可实例化

Laravel-目标[App\Interfaces\Auth\AuthInterface]在生成时不可实例化,laravel,Laravel,在我的Laravel-8应用程序中,我试图将存储库绑定到一个接口 我有以下代码: App\Providers\RepositoryServiceProvider: class RepositoryServiceProvider extends ServiceProvider { public function register() { $this->app->bind( 'App\Interfaces\Auth\AuthInte

在我的Laravel-8应用程序中,我试图将存储库绑定到一个接口

我有以下代码:

App\Providers\RepositoryServiceProvider:

class RepositoryServiceProvider extends ServiceProvider
{
    public function register()
    {
        $this->app->bind(
            'App\Interfaces\Auth\AuthInterface',
            'App\Repositories\Auth\AuthRepository'
        );
    }
}
配置\应用程序:

App\Providers\RepositoryServiceProvider::class,
然后界面如下所示:

namespace App\Interfaces\Auth;

use Illuminate\Http\Request;
use App\Http\Requests;

interface AuthInterface
{
    public function register(Request $request);
}
存储库实现:

namespace App\Repositories\Auth;

use App\Interfaces\Auth\AuthInterface;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use App\Traits\ApiResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Password;
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;

class AuthRepository implements AuthInterface
{
    use ApiResponse;

    public function register(DriverRequest $request)
    {
        DB::beginTransaction();
        try {
            $newUser = User::create([
                'first_name' => $request->first_name,
                'last_name' => $request->last_name,
                'email' => preg_replace('/\s+/', '', strtolower($request->email)),
                'password' => bcrypt($request->password)
            ]);

            DB::commit();
            return $this->success('Signup Successfully Done, please check your email to activate account', $newUser);
        } catch(\Exception $e) {
            DB::rollback();
            Log::error($e);
            return $this->error($e->getMessage(), $e->getCode());
        }
    }
}
控制器

use App\Interfaces\Auth\AuthInterface;
class AuthController extends Controller
{
    protected $authInterface;

    public function __construct(AuthInterface $auth)
    {
        $this->authInterface = $auth;
    }

    public function register(Request $request)
    {
        return $this->authInterface->register($request);
    }
}
当我执行php artisan route:list时,出现以下错误:

Illuminate\Contracts\Container\BindingResolutionException

  Target [App\Interfaces\Auth\AuthInterface] is not instantiable while building [App\Http\Controllers\Api\V1\Auth\AuthController].

  at C:\xampp\htdocs\myapp\vendor\laravel\framework\src\Illuminate\Container\Container.php:1049
1045▕         } else {
1046▕             $message = "Target [$concrete] is not instantiable.";
1047▕         }
1048▕
➜ 1049▕         throw new BindingResolutionException($message);
1050▕     }
1051▕
1052▕     /**
1053▕      * Throw an exception for an unresolvable primitive.

 1   C:\xampp\htdocs\myapp\vendor\laravel\framework\src\Illuminate\Container\Container.php:842
  Illuminate\Container\Container::notInstantiable("App\Interfaces\Auth\AuthInterface")

  2   C:\xampp\htdocs\myapp\vendor\laravel\framework\src\Illuminate\Container\Container.php:714
  Illuminate\Container\Container::build("App\Interfaces\Auth\AuthInterface")
我如何解决它


谢谢

也许会显示存储库实现?@Brianthonpson-我在代码更新中添加了存储库实现。我猜出于某种原因,它没有检测到您的服务提供商。它没有意识到接口实际上应该是与实现相反的依赖关系,所以它试图实例化接口。我会尝试向您的服务提供商添加日志,以确保它实际正在执行,并仔细检查所有名称空间的不一致性。