My source code structure:
- src
- controllers
- controller.php
- Auth
- AuthController.php
- User
- UserController.php
- models
- controllers
composer.json:
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
AuthController.php:
<?php
namespace App\Controllers\Auth;
use App\Models\User;
use App\Controllers\Controller;
class AuthController extends Controller
{
...
}
UserController.php:
<?php
namespace App\Controllers\User;
use App\Models\User;
use App\Controllers\Controller;
class UserController extends Controller
{
...
}
in Slim app:
$container = $app->getContainer();
$container['AuthController'] = function ($container){
return new App\Controllers\Auth\AuthController($container);
};
$container['UserController'] = function ($container){
return new App\Controllers\User\UserController($container);
};
I get an error when calling function from UserController:
Class 'App\Controllers\User\UserController' not found
And also IntelliJ marks the code and gives notification: Undefined class UserController.
Working with AuthController works fine.
In my opinion I got wrong namespacing, but I am not sure how to change it.
I have also run:
composer dump-autoload -o