Slim3 - 容器:Class 未找到

Slim3 - Container: Class not found

我的源码结构:

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
{  
   ...
}

在 Slim 应用中:

$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);
};

从 UserController 调用函数时出现错误:

Class 'App\Controllers\User\UserController' 未找到

同时 IntelliJ 标记代码并给出通知:Undefined class UserController.

使用 AuthController 工作正常。

我认为我的命名空间有误,但我不确定如何更改它。

我也有运行:

composer dump-autoload -o 

您正在使用 Controllers 作为命名空间 class。但是在您的目录结构中 controller 是小写的。您必须将 controllers 目录名称大写为 Controllers。然后你的命名空间就可以使用了。