PHP:尽管自动加载,但找不到类

PHP: Class not found despite autoloading

提问人:Saeesh Tendulkar 提问时间:5/1/2022 最后编辑:Saeesh Tendulkar 更新时间:5/2/2022 访问量:319

问:

我正在使用 Composer 的 ps-4 自动加载器。

"autoload": {
    "psr-4": {
        "App\\":"app/",
        "Database\\":"database/"
    }
},

所以,我在根目录中有主索引 .php 文件,如下所示

require 'vendor/autoload.php';
use App\Server;
$server = new Server();

根目录中有 app 文件夹和一个名为 Server 的类,如下所示

namespace App;
echo "in server<hr>";

class Server{}

我得到“在服务器中”的回声,因此包含类文件。但是我收到此错误

致命错误:未捕获的错误:在 /var/www/html/index.php:8 中找不到类“App\Server” 堆栈跟踪:#0 {main} 在第 8 行的 /var/www/html/index.php 中抛出

它查找名为“App\Server”而不是“Server”的类。我该如何解决这个问题?

PHP 命名空间 自动加载 PSR-4

评论

0赞 Nigel Ren 5/1/2022
应该是吗?namespace App
0赞 Saeesh Tendulkar 5/1/2022
@NigelRen是的,没错。我解决了这个问题。但它仍然给出了同样的错误
0赞 IMSoP 5/1/2022
请提供一个最小的可重现示例 - 语句本身不会触发自动加载器,也不会查找类(它只是编译器执行一些字符串替换的指令),因此不会产生该错误。use
0赞 Saeesh Tendulkar 5/1/2022
@IMSoP对不起。我没有得到你想要的。我已经更改了“Server.php”文件,如您在回答中所说的那样说命名空间应用程序。但它仍然给出了同样的错误
1赞 Saeesh Tendulkar 5/2/2022
@nice_dev该死的。很抱歉造成混乱。我现在已经更新了。它在 index.php 文件中

答: 暂无答案