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
我正在使用 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