我在作曲家的psr-4自动加载方面遇到了一些问题。我有一个看起来像这样的项目结构
Project
- src/
- - Utils/
- - - ID/
- - - - IDInterface.php
- - - - ID.php
- tests/
- - IDTest.php
- ... (other stuff)
然后,在我的composer.json文件中,我有一个psr-4自动加载,如下所示。
"autoload": {
"psr-4": {
"Project\\": "src"
}
}
然后在我的测试课程(IDTest.php)中,我有以下内容
<?php
use PHPUnit\Framework\TestCase;
use Project\Utils\ID;
/**===========================
|| IDTest
==============================
*/
class IDTest extends TestCase
{
public function testConstructFromString()
{
$id = new ID("foo");
$this->assertSame("foo", $id->value());
}
}
?>
但是,当我运行测试时,出现此错误:
1) IDTest::testConstructFromString
Error: Class 'Project\Utils\ID' not found
它似乎指向直线:
$id = new ID("foo");
这表明自动加载无法正常工作。
作为参考,ID类看起来像这样:
<?php
namespace Javelin\Util;
use Javelin\Utils\IDInterface;
use Javelin\Util\IllegalArgumentException;
/**--------------------------------------------------------------------------
|
| ID
|
-----------------------------------------------------------------------------
|
| An ID represents an identifier
|
-----------------------------------------------------------------------------
*/
class ID implements IDInterface{...}
?>
我尝试运行composer dump-autoload
来查看是否仅需要更新自动装带器。但是,可悲的是,问题仍然存在。
有什么建议吗?
感谢进阶:)
答案 0 :(得分:1)
尝试
use Project\Utils\ID\ID;
Project\Utils\ID
-名称空间。
Project\Utils\ID\ID
-类。