Search code examples
phpcomposer-phpautoloader

PHP Composer Autoloader Class not Found Exception


The title speaks itself. So here is my project structure:

|src
    |Database
        |Core
            |MySQL.php
        |Support
    start.php
|vendor
composer.json
index.php

MySQL.php file:

<?php
namespace Database\Core;
//Some methods here

index.php and start.php files:

//start.php file
<?php
require __DIR__ . '/../vendor/autoload.php';
?>

//index.php file
<?php
use Database\Core;
require __DIR__ . '/src/start.php';

$mysql = new MySQL(); // Gets exception Class 'MySQL' cannot found etc.
?>

And finally my composer.json autoload part:

"autoload": {
    "psr-4": "Database\\": "src/" // Also tried "src/Database" too
}

Where is the problem? I'm really tired of trying to cope with this situation. Please help guys! Thanks.


Solution

  • You need to include namespace when you are initializing a class:

    $mysql = new Database\Core\MySQL();
    

    or

    use Database\Core\MySQL;
    $mysql = new MySQL();
    

    See Using namespaces: Aliasing/Importing