[英]composer PSR-4 autoloader “class not found” error
我尝试添加项目目录路径中不存在的DieEcho
类。 但是当我尝试在index.php文件中实现该类时出现错误:
致命错误:未捕获的错误:在/home/j/Projects/project84/public/index.php:8中找不到类'Trzczy \\ Debug \\ DieEcho'第8行的project84 / public / index.php
目录树是这样的:
├── 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类:
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评论。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.