PSR-4 Autoloader 无法识别子文件夹结构中的 类

PSR-4 Autoloader not recognizing classes in subfolder structure

我正在使用 Slim PHP 作为我的应用程序的底层框架,并使用 composer autoload 来加载我的 类。在作曲家我有这个 psr-4 配置:

 "psr-4": {
      "App\": "app/classes/"
    }

我所有的 类 都在 /app/classes/ 文件夹中。

在我的 类 文件夹中,我有所有常见的 类 但特定模块 类 我在子文件夹中。

从我的 ../classes/connect.php 文件中,我在相应的命名空间下使用此方法:

namespace App;
class connect
{
  public function authenticate(){
    office\AuthenticationManager::acquireAppToken(200);
  }
}

在我的子文件夹中 ../classes/office/ 我有一个名为 office.php 的文件,使用此方法:

namespace App\office;
    class AuthenticationManager
    {
        public function acquireAppToken($tid)
        {
           \App\APIManager\RequestManager::sendPostRequest();
        }
    }

上述方法正在调用位于../classes/api.php

中的另一个方法

该文件中的命名空间是

namespace App\APIManager;

问题是调用最后一个方法时出现以下错误: “\App\APIManager\RequestManager”未找到...

我已经尝试用 composer dump-autoload 解决这个问题,但没有用。为什么会发生此错误?

如果您想在 App\APIManager 命名空间中有一个名为 RequestManager 的 class,那么它必须位于 APIManager/RequestManager.php 文件中。

它也适用于 AuthenticationManager class,应移至 office/AuthenticationManager.php

看看PSR-4 examples