Невозможно автозагрузить класс с помощью композитора из другого автоматически загруженного файла класса

Я новичок в использовании композитора для автозагрузки файлов пользовательских классов с использованием способа автозагрузки классов PSR-0.

Ниже представлена ​​моя древовидная структура каталогов.

Невозможно автозагрузить класс с помощью композитора из другого автоматически загруженного файла класса

А ниже моя конфигурация PSR-0 в файле composer.json

Невозможно автозагрузить класс с помощью композитора из другого автоматически загруженного файла класса

Автозагрузка классов возможна при запросе извне моего файла проекта после запроса vendor / autoload.php

Проблема заключается в попытке загрузить класс из другого класса с определенным пространством имен.

Пример:

Я пытаюсь вызвать статический метод :: GetDatabaseConfig () из класса Конфиг в папке Конфиг в класс База данных в папке База данных. Это код, который я использую внутри класса базы данных.

База данных / Database.php

namespace App\Database;
class Database{
    public static $con;
    public static $connected = false;
    public static $error = false;
    public static $error_message = "";

    function __construct( $opt=false ){
        $config = App\Config\Config::GetDatabaseConfig();
        //REST....
    }
}

Этот код не работает и отображает эту ошибку.

Fatal error: Uncaught Error: Class "App\Database\App\Config\Config" not found in /storage/emulated/0/code/durandal/htdocs/api/idan/App/Database/Database.php:13

Я вижу, что пространство имен, используемое в файле Database.php, используется в качестве префикса при запросе класса App \ Config \ Config.

Что мне здесь не хватает? Как это решить?

Вы используете PSR-0, а не PSR-4 по какой-либо конкретной причине?

yivi 31.03.2021 09:20

Просто это заставляет меня оставаться строго организованным с моей структурой каталогов и файлов.

Danish Nayeem 31.03.2021 09:59

Почему бы правильно не импортировать классы с помощью оператора use? Если вы хотите пропустить use, вы должны использовать путь абсолютный к классу, например \App\Config\Config::GetDatabaseConfig (с обратной косой чертой спереди)

Nico Haase 31.03.2021 12:20

Ага. Вот чем я сейчас занимаюсь.

Danish Nayeem 31.03.2021 15:30
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
24
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы используете не FQCN класса Config, а имя относительно пространства имен App\Database.

Чтобы исправить это, вам нужно добавить к классу Config префикс \:

\App\Config\Config::GetDatabaseConfig();

или даже лучше, вы можете импортировать класс Config с use App\Config\Config;, а затем использовать его с Config::GetDatabaseConfig()

Другие вопросы по теме