Композитор PSR-4 Класс автозагрузки не найден
Я несколько часов бьюсь головой, пытаясь понять, почему автозагрузка не работает для "Authentication\auth()". Класс "dBase\db()" загружается просто отлично, но я получаю:
Ошибка: класс 'Authentication\auth' не найден в /var/htdocs/dev/test.php в строке 8
при вызове test.php.
Root composer.json -
"require": {
"geeshoe/dbClass": "dev-develop",
"geeshoe/authClass": "dev-master"
},
"autoload": {
"psr-4": {
"dBase\\": "vendor/geeshoe/dbclass/",
"Authentication\\": "vendor/geeshoe/authClass/"
}
}
заголовок authClass.php -
<?php
namespace Authentication;
use dBase\db;
class auth extends db
{
test.php -
if (file_exists("vendor/autoload.php")) {
require "vendor/autoload.php";
} else {
echo "Dam.. Something went wrong!";
}
$test = new \dBase\db();
$var = new \Authentication\auth();
Если бы кто-то мог указать на очевидное для меня, это было бы здорово. Кстати, автозагрузка не указана в файле authClass->composer.json для тестирования.
1 ответ
Проблема здесь в том, что на самом деле вы не используете PSR-4. В PSR-4 имя класса должно совпадать с именем файла. За db
класс это хорошо, потому что класс БД расположен в db.php
файл, но auth
класс находится в authClass.php
файл и в этом проблема. Вы должны обновить имя файла до auth.php
Вам может понадобиться запустить:
composer dump-autoload
Также имейте в виду, что в реальных пакетах один пакет поставщика имеет одно пространство имен, поэтому вы не создаете несколько пространств имен для одного пакета, а только один