[英]PSR-4 autoloading trouble
I want to load HomeController class from lib
directory: 我想从
lib
目录加载HomeController类:
root/
-lib/
--/HomeController.php
-vendor/
-composer.json
-index.php
Composer.json Composer.json
"autoload": {
"psr-4": {
"Lib\\": "lib/"
}
}
HomeController.php HomeController.php
namespace Lib;
class HomeController {}
index.php 的index.php
var_damp(new \Lib\HomeController.php);
It doesn't find the class. 它没有找到班级。
But if I put HomeController.php inside Controllers directory: 但是,如果我将HomeController.php放在Controllers目录中:
root/
-lib/
--/Controllers/HomeController.php
And update the namespaces: index.php to var_damp(new \\Lib\\Controllers\\HomeController.php);
并更新命名空间:index.php到
var_damp(new \\Lib\\Controllers\\HomeController.php);
and HomeController.php to: 和HomeController.php:
namespace Lib\Controllers;
class HomeController {}
It works perfect. 它完美无缺。
It's weird, I can't find any docs talking about it. 这很奇怪,我找不到任何谈论它的文档。 I don't need additional directories, in this case I want the HomeController class directly inside
lib
directory. 我不需要额外的目录,在这种情况下我想直接在
lib
目录中的HomeController类。
How can I make it works inside lib
folder? 如何让它在
lib
文件夹中运行?
I think the trailing slash in the path reference is your problem. 我认为路径引用中的尾部斜杠是你的问题。 Change the autoload section in
composer.json
to this: 将
composer.json
的自动加载部分更改为:
"autoload": {
"psr-4": {
"Lib\\": "lib"
}
}
...then run composer dump-autoload
. ...然后运行
composer dump-autoload
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.