FreshMeatInIT
@FreshMeatInIT
В замкнутом кругу

Почему PHP не видит родительский класс при использовании автозагрузчика классов Composer?

У меня есть проект, вот его структура:
5f8c45af6dd5e456589909.png
Я, соответственно, использовал Composer для автозагрузки классов, это прописал в cmposer.json:
"autoload":
    {
        "psr-4":
        {
            "core\\": "core",
            "application\\controllers\\": "controllers",
            "application\\models\\": "models",
            "application\\views\\": "views"
        }
    }

Не забыл нажать composer install.
У меня есть папка models, в которой лежат 2 файла: model.php и authmodel.php,
соответственно, это 2 класса, содержимое model.php:
namespace application\models;
require_once __DIR__.'/../../vendor/autoload.php';

class Model
{

}


И содержимое authmodel.php:
namespace application\models;
require_once __DIR__.'/../../vendor/autoload.php';

class AuthModel extends Model
{

}


Как видно, они находятся в одной и той же папке, у них подключён автозагрузчик от Composer, они находятся в одном и том же пространстве имён, но когда у меня задействуется AuthModel то я получаю ошибку:

Fatal error: Class 'application\models\Model' not found in D:\prog\openserv\OpenServer\domains\test.dev\application\models\authmodel.php on line 7
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ответы на вопрос 1
delphinpro
@delphinpro
frontend developer
1. Регистр символов имеет значение.
2. Не нужно подключать автозагрузчик в каждом файле. Это делается один раз, в точке входа.
3. Зачем столько мусора в конфигурации автозагрузчика?
Достаточно указать корневой неймспейс.
"psr-4":
        {
            "core\\": "core",
            "application\\": "application",
        }


здесь я подробно объяснял, как использовать композер для автозагрузки PSR-0 или PSR-4, и как правильно построить структуру проекта?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы