无法使用其他自动加载的 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()
一起使用
我刚开始使用 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()