php: автозагрузка композитора не работает с несколькими каталогами внутри папки src

Вот моя структура папок

введите описание изображения здесь

в моем 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';
}
}

-1

Решение

+ Изменить composer.json читать:

"autoload": {
"psr-4": {
"": "src/"}
}

Тогда беги composer dump-autoload регенерировать vendor/autoload.php,

Узнайте больше о автозагрузка раздел composer.json.

-1

Другие решения

Вы только заявили, что один префикс находится в src, Добавьте еще один:

"autoload": {
"psr-0": {
"HelloWorld": "src/",
"Test": "src/"}
}

Также обратите внимание, что когда вы используете пространства имен, PSR-4 лучше подходит:

"autoload": {
"psr-4": {
"HelloWorld\\": "src/HelloWorld/",
"Test\\": "src/Test"}
}
2

Ваш composer.json содержит некоторую запись, которая заставляет его загружать HelloWorld, но для папки «Test» такой записи нет.

Возможно, это поможет скопировать ваш First.php в папку HelloWorld и изменить вашу ссылку в package.index.php.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector