Php 致命错误:未捕获错误:类';Project\Router\Hello';找不到
这是我第一次使用Composer,我想弄明白为什么它不使用我的名称空间 在我的Php 致命错误:未捕获错误:类';Project\Router\Hello';找不到,php,namespaces,composer-php,autoload,Php,Namespaces,Composer Php,Autoload,这是我第一次使用Composer,我想弄明白为什么它不使用我的名称空间 在我的project/目录中: ├── composer.json ├── composer.lock ├── composer.phar ├── README.md ├── vendor (truncated) └── src ├── Config.php ├── Handler.php └── Router.php src/Config.php <?php $project_root =
project/
目录中:
├── composer.json
├── composer.lock
├── composer.phar
├── README.md
├── vendor (truncated)
└── src
├── Config.php
├── Handler.php
└── Router.php
src/Config.php
<?php
$project_root = realpath(__DIR__ . '/..');
$autoload = $project_root . '/vendor/autoload.php';
?>
http://127.0.1.1/project/src/Router.php
:
致命错误:未捕获错误:在/path/to/Project/src/Router.php中找不到类'Project\Router\Hello'。38(非实际行)堆栈跟踪:#0{main}在第38行的/path/to/Project/src/Router.php中抛出(非实际行)
我能够使用外部依赖项,因此我的通用编写器设置似乎还可以。我只是不知道我把自己的名字空间搞砸了。你似乎误解了PSR4的工作原理
"autoload": {
"psr-4": {
"Project\\": "src"
}
}
此配置意味着如果您从自动加载程序请求类Project\Handler\Hello,它将检查路径src\Handler\Hello.php
(该路径不存在)
如果您将目录结构更改为以下内容,它将起作用:
└── src
├── Config.php
├── Router.php
└── Handler
└── Hello.php (renamed from Handler.php)
另外,Config.php或Router.php都不包含类,这就破坏了使用类自动加载程序的意义
读一读:只是为了好玩,你试过使用
\Project\Handler\Hello::world()吗
而不是使用
?@Machavity是的,我肯定有。同样的错误。
{
"autoload": {
"psr-4": {
"Project\\": "src"
}
}
}
"autoload": {
"psr-4": {
"Project\\": "src"
}
}
└── src
├── Config.php
├── Router.php
└── Handler
└── Hello.php (renamed from Handler.php)