gpt4 book ai didi

php - fatal error : Uncaught Error: Class 'Project\Router\Hello' not found

转载 作者:行者123 更新时间:2023-12-04 16:55:57 26 4
gpt4 key购买 nike

这是我第一次使用 Composer,我在试图弄清楚为什么它没有选择我的命名空间时有点生气。

在我的 project/目录:

├── composer.json
├── composer.lock
├── composer.phar
├── README.md
├── vendor (truncated)
└── src
├── Config.php
├── Handler.php
└── Router.php

源代码/配置文件
<?php
$project_root = realpath(__DIR__ . '/..');
$autoload = $project_root . '/vendor/autoload.php';
?>

源代码/路由器.php
<?php namespace Project\Router;
include_once("Config.php");
require $autoload;

use Project\Handler;

Hello::world();
?>

源代码/处理程序.php
<?php namespace Project\Handler;

include_once("Config.php");
require $autoload;

class Hello {
public function world() {
echo "Hello world!";
}
}
?>

Composer .json
{
"autoload": {
"psr-4": {
"Project\\": "src"
}
}
}
http://127.0.1.1/project/src/Router.php :

Fatal error: Uncaught Error: Class 'Project\Router\Hello' not found in /path/to/project/src/Router.php:38(not actual line) Stack trace: #0 {main} thrown in /path/to/project/src/Router.php on line 38(not actual line)



我能够使用外部依赖项,因此我的一般 Composer 设置似乎没问题。我只是想不通我自己的命名空间在哪里搞砸了。

最佳答案

您似乎误解了 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 都不包含类,这与使用类自动加载器的意义相悖。

读一读: http://www.php-fig.org/psr/psr-4/

关于php - fatal error : Uncaught Error: Class 'Project\Router\Hello' not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37927174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com