【发布时间】:2021-06-27 03:31:34
【问题描述】:
我是使用 composer 自动加载自定义类文件的新手,使用“PSR-0”自动加载类的方式。
下面是我的目录树结构。
下面是我在 composer.json 文件中的 PSR-0 配置
在需要 vendor/autoload.php 后从我的项目文件外部请求时,类自动加载很好
问题是在尝试从另一个具有已定义命名空间的类中加载一个类时。
例子:
我正在尝试从 Config 文件夹中的 Config 类调用静态方法 ::GetDatabaseConfig() 到 Database 文件夹中的 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 类时用作前缀。
我在这里缺少什么?如何解决?
【问题讨论】:
-
您是否出于任何特殊原因使用 PSR-0 而不是 PSR-4?
-
只是它迫使我严格按照我的目录和文件结构进行组织。
-
为什么不使用
use语句正确导入类?如果你想跳过use,你必须使用类的absolute路径,比如\App\Config\Config::GetDatabaseConfig(前面有一个反斜杠) -
是的。这就是我现在正在做的事情。
标签: php namespaces composer-php autoload psr-0