[英]Composer Autoload gives error “Class not found”
我在 Composer 的 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;
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;
class ID implements IDInterface{...}
?>
我嘗試運行composer dump-autoload
以查看是否只需要更新自動加載器。 但是,遺憾的是,問題仍然存在。
嘗試
use Project\Utils\ID\ID;
Project\\Utils\\ID
- 命名空間。 Project\\Utils\\ID\\ID
- 類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.