Я новичок в использовании композитора для автозагрузки файлов пользовательских классов с использованием способа автозагрузки классов 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.
Что мне здесь не хватает? Как это решить?
Просто это заставляет меня оставаться строго организованным с моей структурой каталогов и файлов.
Почему бы правильно не импортировать классы с помощью оператора use? Если вы хотите пропустить use, вы должны использовать путь абсолютный к классу, например \App\Config\Config::GetDatabaseConfig (с обратной косой чертой спереди)
Ага. Вот чем я сейчас занимаюсь.






Вы используете не FQCN класса Config, а имя относительно пространства имен App\Database.
Чтобы исправить это, вам нужно добавить к классу Config префикс \:
\App\Config\Config::GetDatabaseConfig();
или даже лучше, вы можете импортировать класс Config с use App\Config\Config;, а затем использовать его с Config::GetDatabaseConfig()
Вы используете PSR-0, а не PSR-4 по какой-либо конкретной причине?