PSR-4自动加载问题

时间:2017-03-29 01:57:56

标签: php namespaces composer-php autoload psr-4

我想从lib目录加载HomeController类:

root/
-lib/
--/HomeController.php
-vendor/
-composer.json
-index.php

Composer.json

"autoload": {
    "psr-4": {
        "Lib\\": "lib/"
    }
}

HomeController.php

namespace Lib;
class HomeController {}

的index.php

var_damp(new \Lib\HomeController.php);

它没有找到班级 但是如果我将HomeController.php放在Controllers目录中:

root/
-lib/
--/Controllers/HomeController.php

并将命名空间:index.php更新为var_damp(new \Lib\Controllers\HomeController.php);,将HomeController.php更新为:

namespace Lib\Controllers;
class HomeController {}

它完美无缺 这很奇怪,我无法找到任何谈论它的文档。我不需要其他目录,在这种情况下,我希望HomeController类直接位于lib目录中。

如何让它在lib文件夹中运行?

1 个答案:

答案 0 :(得分:0)

我认为路径引用中的尾部斜杠是你的问题。将composer.json中的自动加载部分更改为:

"autoload": {
  "psr-4": {
    "Lib\\": "lib"
  }
}

...然后运行composer dump-autoload