Вот моя структура папок
в моем 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';
}
}
+ Изменить composer.json
читать:
"autoload": {
"psr-4": {
"": "src/"}
}
Тогда беги composer dump-autoload
регенерировать vendor/autoload.php
,
Узнайте больше о автозагрузка раздел composer.json
.
Вы только заявили, что один префикс находится в src
, Добавьте еще один:
"autoload": {
"psr-0": {
"HelloWorld": "src/",
"Test": "src/"}
}
Также обратите внимание, что когда вы используете пространства имен, PSR-4 лучше подходит:
"autoload": {
"psr-4": {
"HelloWorld\\": "src/HelloWorld/",
"Test\\": "src/Test"}
}
Ваш composer.json содержит некоторую запись, которая заставляет его загружать HelloWorld, но для папки «Test» такой записи нет.
Возможно, это поможет скопировать ваш First.php в папку HelloWorld и изменить вашу ссылку в package.index.php.