jeudi 2 juin 2022

target class interface is not instantiable while building

i am using design patterns repository and i wrote every thing coorect but i have an error returns Target [App\Repository\categoryRepositoryInterface] is not instantiable while building [App\Http\Controllers\CategoryController]. i dont know why although i wrote every thing correct please help

here is my code

my config/app

    App\Providers\RepositoryServiceProvider::class,

and my categorycontroller

    <?php

namespace App\Http\Controllers;

use App\Repository\categoryRepositoryInterface;
use Illuminate\Http\Request;

class CategoryController extends Controller
{
    private categoryRepositoryInterface $categoryRepository;

    public function __construct(categoryRepositoryInterface $categoryRepository)
    {
        $this->categoryRepository = $categoryRepository;
    }

and my repositoryinterface

    <?php

namespace App\Repository;

use Illuminate\Http\Request;

interface categoryRepositoryInterface 
{
    public function createCategory(Request $request);

    public function validation(Request $request);
    
}

and my category repository

    <?php

namespace App\Repository;

use App\Models\Category;
use Illuminate\Http\Request;

use Illuminate\Support\Facades\Validator;

class categoryRepository implements categoryRepositoryInterface{

    public function validation(Request $request){
        $validation = Validator::make($request->all(),[
            'name' => 'required',
        ]);


        if($validation->fails()){
            return response()->json([
                'status' => 400,
                'errors' => $validation->errors(),
            ]);
        }
    }
    
    public function createCategory(Request $request)
    {

            $category = new Category();
            $category->name = $request->name;
            $category->save();        
    }

}

and my servicerepositoryprovider

    <?php

namespace App\Providers;

use App\Repository\CategoryRepository;
use App\Repository\CategoryRepositoryInterface;
use Illuminate\Support\ServiceProvider;

class RepositoryServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->bind(CategoryRepositoryInterface::class, CategoryRepository::class);
    }

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

Aucun commentaire:

Enregistrer un commentaire