Php 作曲家自动加载给出错误“;“未找到类”;
我对composer的psr-4自动加载有一些问题。我有一个类似这样的项目结构Php 作曲家自动加载给出错误“;“未找到类”;,php,composer-php,Php,Composer Php,我对composer的psr-4自动加载有一些问题。我有一个类似这样的项目结构 项目 -src/ --UTIL/ --身份证/ -------IDInterface.php ---ID.php -测验/ --IDTest.php - ... (其他资料) 然后,在我的composer.json文件中,我有一个psr-4自动加载,如下所示 "autoload": { "psr-4": { "Project
项目
-src/
--UTIL/
--身份证/
-------IDInterface.php
---ID.php
-测验/
--IDTest.php
- ... (其他资料)
然后,在我的composer.json文件中,我有一个psr-4自动加载,如下所示
"autoload": {
"psr-4": {
"Project\\": "src"
}
}
然后在我的测试类(IDTest.php)中,我有以下内容
<?php
use PHPUnit\Framework\TestCase;
use Project\Utils\ID;
class IDTest extends TestCase
{
public function testConstructFromString()
{
$id = new ID("foo");
$this->assertSame("foo", $id->value());
}
}
?>
它似乎指向一条线:
$id = new ID("foo");
这表明自动加载没有像我期望的那样工作
作为参考,ID类如下所示:
<?php
namespace Javelin\Util;
use Javelin\Utils\IDInterface;
use Javelin\Util\IllegalArgumentException;
class ID implements IDInterface{...}
?>
我试着运行composer dump autoload
,看看是否只需要更新自动加载器。但遗憾的是,问题依然存在。试试看
use Project\Utils\ID\ID;
Project\Utils\ID
-命名空间。
Project\Utils\ID\ID
-class.ID.php
文件定义了Javelin\Util\ID
类,其中应定义Project\Utils\ID\ID
,您正在请求Project\Utils\ID
。这里没有匹配项,您需要真正清理它并决定您的类应该使用什么名称空间。好的,这就解决了它。为什么名称空间项目是\Utils\ID?我认为我在类定义中指定了名称空间仅为Project\Utils,这应该意味着Project\Utils\ID是类?非常感谢你的帮助。:)