无法使用其他自动加载的 class 文件中的作曲家自动加载 class

Cannot autoload class using composer from within other autoloaded class file

我刚开始使用 Composer 自动加载自定义 class 文件,使用 'PSR-0' 自动加载方式 classes.

下面是我的目录树结构。

下面是我在 composer.json 文件中的 PSR-0 配置

Class 在需要 vendor/autoload.php

之后从我的项目文件外部请求时自动加载很好

问题是当试图从另一个 class 中加载一个 class 并定义了命名空间时。

示例:

我正在尝试从 Config class 中调用静态方法 ::GetDatabaseConfig() Config 文件夹到 Database class Database 文件夹中。 这是我在数据库 class.

中使用的代码

Database/Database.php

namespace App\Database;
class Database{
    public static $con;
    public static $connected = false;
    public static $error = false;
    public static $error_message = "";

    function __construct( $opt=false ){
        $config = App\Config\Config::GetDatabaseConfig();
        //REST....
    }
}

此代码无效并显示此错误。

Fatal error: Uncaught Error: Class "App\Database\App\Config\Config" not found in /storage/emulated/0/code/durandal/htdocs/api/idan/App/Database/Database.php:13

我看到 Database.php 文件中使用的名称空间在请求时用作前缀 App\Config\Config class。

我在这里缺少什么?如何解决?

您使用的不是 Config class 的 FQCN,而是相对于 App\Database 命名空间的名称。

要解决此问题,您需要在 Config class 前加上 \:

\App\Config\Config::GetDatabaseConfig();

甚至更好,您可以使用 use App\Config\Config; 导入 Config class,然后将其与 Config::GetDatabaseConfig()

一起使用