Composer Autoloading PHP

3.3k views Asked by At

I need help with composer autoloader. Well in my opinion I have set up everything correctly, but still I am having an error "class has been not found".

So maybe someone here will be able to help me. Look at the screenshoots below to understand the way I structured my project and the way I autoloaded namespace for my Test class.

enter image description here

enter image description here

enter image description here

The question is why I am having an error, class has been not found?

1

There are 1 answers

1
Martin Bean On BEST ANSWER

You’re autoload array is wrong in your composer.json file. If your root namespace is app then it should look like this:

{
    "autoload": {
        "psr-0": {
            "app": "/"
        }
    }
}

You can then use your classes in the app namespace like this:

<?php
require('../vendor/autoload.php');

$test = new \app\controller\Test();

However, I would camel-case your namespaces, as is the PSR way. So in my case, I have a directory structure like this:

  • src/
    • MCB/
      • Controller/
        • PagesController.php
  • vendor/
    • autoload.php

My composer.json file looks like this:

{
    "autoload": {
        "psr-0": {
            "MCB": "src/"
        }
    }
}

And I can then use my classes like this:

<?php
require('../vendor/autoload.php');

$controller = new \MCB\Controller\PagesController();