【问题标题】:PSR-4 autoloading troublePSR-4 自动装弹问题
【发布时间】:2017-08-22 07:36:47
【问题描述】:

我想从lib 目录加载 HomeController 类:

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

作曲家.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 文件夹中工作?

【问题讨论】:

  • 可能是你错过了执行composer dumpautoload 命令?
  • 我试过composer dump-autoloadautoload_psr4.php是正确的。我也删除了 composer.lock 并再次重建它。我仍然无法使用自动加载。

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


【解决方案1】:

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

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

...然后运行composer dump-autoload

【讨论】:

  • 试了几次。它没有任何效果。在 Composer 文档中,他们建议使用斜杠。无论如何,我会再试一次。谢谢
猜你喜欢
  • 1970-01-01
  • 2018-07-25
  • 1970-01-01
  • 2018-08-25
  • 1970-01-01
  • 2014-03-24
  • 2021-08-29
  • 2015-01-08
  • 2023-03-09
相关资源
最近更新 更多