提问人:Danish Nayeem 提问时间:3/31/2021 更新时间:3/31/2021 访问量:470
无法使用作曲家从其他自动加载的类文件中自动加载类
Cannot autoload class using composer from within other autoloaded class file
问:
我是使用 composer 使用“PSR-0”自动加载类的方式自动加载自定义类文件的新手。
下面是我的目录树结构。
下面是我在 composer.json 文件中的 PSR-0 配置
在需要供应商/自动加载.php后从我的项目文件外部请求时,类自动加载很好
问题在于,当尝试从具有已定义命名空间的另一个类中加载一个类时。
例:
我正在尝试将静态方法 ::GetDatabaseConfig() 从 Config 文件夹中的 Config 类调用到 Database 文件夹中的 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....
}
}
此代码不起作用并显示此错误。
致命错误:未捕获错误:在 /storage/emulated/0/code/durandal/htdocs/api/idan/App/Database/Database.php:13 中找不到类“App\Database\App\Config\Config”
我看到 Database.php 文件中使用的命名空间在请求 App\Config\Config 类时用作前缀。
我在这里错过了什么?如何解决?
答:
2赞
Edi Modrić
3/31/2021
#1
您使用的不是类的 FQCN,而是相对于命名空间的名称。Config
App\Database
要解决此问题,您需要在类前加上以下前缀:Config
\
\App\Config\Config::GetDatabaseConfig();
或者更好的是,您可以导入类,然后将其与Config
use App\Config\Config;
Config::GetDatabaseConfig()
评论
use
use
\App\Config\Config::GetDatabaseConfig