这是我的文件夹结构
我的package/index.php
中的看起来像这样
require_once 'vendor/autoload.php';
use HelloWorld\SayHello;
use Test\First;
//works fine
SayHello::world();
//returns classnot found error
First::sayTest();
在我的composer.json中,我已经包含以下内容。
"autoload": {
"psr-0": {
"HelloWorld": "src/"
}
}
但我在First::sayTest()
行
致命错误:未捕获错误:未找到类'Test \ First'
但是First.php
文件夹下存在班级src\Test
。
namespace Test;
class First
{
public static function sayTest()
{
echo 'test';
}
}
答案 0 :(得分:3)
您只声明一个前缀位于src
。再添一个:
"autoload": {
"psr-0": {
"HelloWorld": "src/",
"Test": "src/"
}
}
另请注意,当您使用名称空间时,PSR-4更适合:
"autoload": {
"psr-4": {
"HelloWorld\\": "src/HelloWorld/",
"Test\\": "src/Test"
}
}
答案 1 :(得分:0)
你的composer.json包含一些条目,这使得它加载了HelloWorld,但文件夹没有这样的条目" Test"。
将您的First.php复制到HelloWorld文件夹并更改package.index.php中的引用可能会有所帮助。
答案 2 :(得分:-2)
将composer.json
更改为:
"autoload": {
"psr-4": {
"": "src/"
}
}
然后运行composer dump-autoload
以重新生成vendor/autoload.php
。
详细了解autoload的composer.json
部分。