Home > Net >  How to properly use the class? ( Target class does not exist)
How to properly use the class? ( Target class does not exist)

Time:02-01

I have a controller class with this default namespace and there are some uses. But I want to use also a class that I created inside the app folder in the directory Acme/Transfomers/LessonTransformer.php.

However when I use that like:

namespace App\Http\Controllers;

use App\Models\Lesson;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Response;
use Acme\Transformers\LessonTransformer;

class LessonsController extends Controller

Here is the constructor:

class LessonsController extends Controller
{
    
    protected $lessonTransformer;

    public function __construct(LessonTransformer $lessonTransformer)
    {
        $this->lessonTransformer = $lessonTransformer;
    }

The class Transformer:

namespace Acme\Transformers;

abstract class Transformer{

The class LessonTransformer:

namespace Acme\Transformers;


class LessonTransformer extends Transformer{

I get:

Illuminate\Contracts\Container\BindingResolutionException
Target class [Acme\Transformers\LessonTransformer] does not exist.
http://127.0.0.1:8000/api/lessons/

Do you know how to properly fix this?

CodePudding user response:

In order to recognize a new source folder named Acme You need to register the Acme in the PSR-4 autloading of composer.json :

{
   ...

   "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Acme\\": "Acme/",
            "Database\\Factories\\": "database/factories/",
            "Database\\Seeders\\": "database/seeders/"
        }
    },

    ...
}

Then reload composer autoload:

$ composer dump-autoload

More information about PSR-4: https://www.php-fig.org/psr/psr-4/

  •  Tags:  
  • Related