gpt4 book ai didi

php - composer PSR-4 自动加载器 "class not found"错误

转载 作者:行者123 更新时间:2023-12-04 17:01:52 28 4
gpt4 key购买 nike

我尝试添加 DieEcho项目目录路径中不存在的类。但是当我尝试在 index.php 文件中实现类时出现错误:

Fatal error: Uncaught Error: Class 'Trzczy\Debug\DieEcho' not found in /home/j/Projects/project84/public/index.php:8 Stack trace: #0 {main} thrown in /home/j/Projects/project84/public/index.php on line 8



目录树是这样的:
├── debug
│   └── php
│   └── DieEcho.php
└── project84
├── composer.json
└── public
   └── index.php

我跑 composer dump-autoload所以 中的条目autoload_psr4.php 出现:
j@debian:~/Projects/project84$ cat ../../vendors/project84/composer/autoload_psr4.php 
<?php

// autoload_psr4.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname(dirname($vendorDir)).'/Projects/project84';

return array(
//(...)
'Trzczy\\Debug\\' => array($baseDir . '/../debug/php'), //the entry
//(...)
);
j@debian:~/Projects/project84$

DieEcho.php 类(class):
j@debian:~/Projects/project84$ cat ../debug/php/DieEcho.php 
<?php

namespace Trzczy\Debug;
class DieEcho
{
//(...)
}
j@debian:~/Projects/project84$

我尝试在 中实现该类index.php 这样:
j@debian:~/Projects/project84$ cat public/index.php 
<?php
use Zend\Mvc\Application;
use Zend\Stdlib\ArrayUtils;
use Trzczy\Debug\DieEcho;

error_reporting(-1);
ini_set('display_errors', true);
new DieEcho;
//(...)

更新

composer.json :
j@debian:~/Projects/project84$ cat composer.json 
{
"config": {
"vendor-dir": "../../vendors/project84"
},
//(...)
"autoload": {
"psr-4": {
"Application\\": "module/Application/src/",
"Trzczy\\Debug\\": "../debug/php/"
}
},
//(...)
}
j@debian:~/Projects/project84$

我做错了什么?这是在 zend framework 3 项目中,但我不知道这些信息是否重要。

最佳答案

原因是包括autoload.php被放置在类实现之后。当我在包含 autoload.php 之后移动实现时,它解决了。感谢@Magnus Eriksson 的评论。

关于php - composer PSR-4 自动加载器 "class not found"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49476938/

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