超薄自动加载器和命名空间问题

Slim autoloader & namespace issue

我认为我的问题很常见,但即使有大量关于命名空间的文档,我也无法弄清楚我的代码有什么问题。

所以我使用的是 Slim 4.1,我将我的工作文件放在 app/ 文件夹中的 Custom/ 文件夹中。 public/ -- index.php app/ -- Custom/ ---- routes/ ------ manage.route.php -- routes.php src/

我将此行添加到 compose.json。

    "autoload": {
        "psr-4": {
            "App\": "src/",
            "Custom\": "app/Custom/" // my custom line
        }
    }

在 routes.php 中,我尝试使用 use 调用我的文件,我的文件的命名空间如下:

use Custom\Routes\Manage as Manage;

在我的 class 的文件中:

namespace Custom\Routes\Manage; 在顶部;

当我在 routes.php 中点击 new Manage(); 时,我产生了以下错误:

Class 'Custom\Routes\Manage' not found in '[directories]/routes.php'

我很确定当我删除命名空间调用时,composer 会加载文件,因为自动加载的文件数量会发生变化。

也许我没有以正确的方式调用我的 Class,我现在真的不知道。 你能给我指路吗?

非常感谢

编辑:

我还用 composer dump-autoload -o

重新加载了作曲家

Composer 正在添加我的文件夹,所以问题不在于此,它写在 vendor/composer/autoloader_psr4。php 'Custom\' => array($baseDir . '/app/Custom')

正如 Nigel Ren 所指出的,这只是一个命名空间问题。

Your namespace should be (I think) namespace Custom\Routes; as I think it's creating your class as Custom\Routes\Manage\Manage"