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

时间:2017-12-23 11:04:30

标签: php composer-php autoload psr-4

我使用Slim PHP作为我的app和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来解决这个问题,但它没有帮助。为什么会发生这种错误?

1 个答案:

答案 0 :(得分:3)

如果您希望RequestManager命名空间中有一个名为App\APIManager的类,则它必须位于APIManager/RequestManager.php文件中。

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

查看PSR-4 examples