gpt4 book ai didi

php - 目标不可实例化。 Laravel 5 - 应用绑定(bind)服务提供者

转载 作者:IT王子 更新时间:2023-10-28 23:52:19 25 4
gpt4 key购买 nike

我收到此错误:

BindingResolutionException in compiled.php line 1029:

Target [App\Models\Contracts\Repositories\IUserRepository] is not instantiable.

我的代码如下:

接口(interface):

namespace App\Models\Contracts\Repositories;

use App\Models\Objects\DTO\User;

interface IUserRepository
{
function Create( User $user );
}

具体的:

namespace App\Models\Concrete\Eloquent;

use App\Models\Contracts\Repositories\IUserRepository;
use App\Models\Objects\DTO\User;

class EqUserRepository implements IUserRepository
{
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return User
*/
public function Create( User $user )
{
return User::create( [
'first_name' => $user->first_name,
'last_name' => $user->last_name,
'username' => $user->username,
'email' => $user->email,
'password' => bcrypt( $user->password ),
] );
}

}

服务提供商:

<?php namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider {

/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//
}

/**
* Register any application services.
*
* This service provider is a great spot to register your various container
* bindings with the application. As you can see, we are registering our
* "Registrar" implementation here. You can add your own bindings too!
*
* @return void
*/
public function register()
{

$this->app->bind(
'App\Models\Contracts\Repositories\IUserRepository',
'App\Models\Concrete\Eloquent\EqUserRepository'
);
}

}

Controller :

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Contracts\Auth\Guard;
use Illuminate\Contracts\Auth\Registrar;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;

use App\Models\Contracts\Repositories\IUserRepository;
use App\Models\Objects\DTO\User;

class AuthController extends Controller
{
protected $auth;
private $userRepository;

public function __Construct(
Guard $auth,
IUserRepository $userRepo )
{
...

文件夹结构

enter image description here

我还看到我可能需要在我的 composer.json 中声明命名空间,所以我尝试了以下以及上面的方法:

"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/",
"App\\Models\\Concrete\\Eloquent\\": "app/Models/Concrete/Eloquent/",
"App\\Models\\Contracts\\Repositories\\": "app/Models/Contracts/Repositories/",
"App\\Models\\Objects\\DTO\\": "app/Models/Objects/DTO/"
}
},

然后运行 ​​composer dump-autoload

有什么我忘了做什么的想法吗?

最佳答案

我注意到 compiled.php 没有更新。

在您项目的根文件夹的 cmd 行中运行此函数:

php artisan clear-compiled

关于php - 目标不可实例化。 Laravel 5 - 应用绑定(bind)服务提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28595862/

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