PSR-4不能自动加载类文件?

时间:2018-05-25 23:57:26

标签: php

索引:<?php require '../application/bootstrap.php'; ?>

自举:

<?php

define("START", microtime(true));
define("ROOT", realpath(__DIR__.'/../'));

include '../vendor/autoload.php';

include ROOT . '/application/Library/Application.php';

App\Application::getClass('test')->test();

Composer.JSON:

"autoload": {
    "psr-4": {
        "App\\": "application/"
    }
}

问题在于这一行:

include ROOT . '/application/Library/Application.php';

我不应该包括它,PSR-4应该为我做。这是我的Application类。

<?php

namespace App;

class Application
{
    public static function getClass($library){} // removed body for minimal example
}

?>

这是我的文件结构:https://i.imgur.com/Gr1aaZG.png,供应商文件夹隐藏在我的IDE中,因为我在我的VSCode设置中配置它,尽管它在那里。

1 个答案:

答案 0 :(得分:0)

您的PSR-4命名空间表示App命名空间的ROOT位于文件夹application/,但您的文件位于路径/application/Library/Application.php。使用此配置,您可以将Application.php移至/application/Application.php,也可以将应用程序类的命名空间设置为App\Library;

这应该可以解决你的问题。