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

标签 php namespaces composer-php slim autoload

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

所以我使用的是 Slim 4.1 并将我的工作文件放在文件夹 Custom/ 中在 app/文件夹。 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;在其顶部;

当我点击 new Manage();在 routes.php 我产生了以下错误:
Class 'Custom\Routes\Manage' not found in '[directories]/routes.php'
我很确定当我删除命名空间调用时,composer 会随着自动加载的文件数量的变化加载文件。

也许我没有以正确的方式称呼我的类(class),我现在真的不知道。
你能给我指路吗?

非常感谢提前

编辑:

我还用 composer dump-autoload -o 重新加载了 Composer

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"

关于php - 超薄自动加载器和命名空间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58490768/

相关文章:

php - MySQL如何防止主键重复

php - 输出缓冲与将内容存储到 PHP 变量中

C++ 命名空间约定

php - Composer - 不使用自动加载和加载单个类?

php - 使用构造函数分配属性值和在类声明中分配属性有什么区别?

php - 转换日期字符串以插入 mysql 日期格式

C++ 类外运算符实现解析为 `namespace::operator<<` 而不是 `operator<<`

c# - 命名空间导致 NullReferenceException?

symfony-1.4 - Composer 不在 AWS Ubuntu 服务器上工作,在本地工作正常

svn - Composer : Multiple packages in SVN repository