Название говорит само за себя. Итак, вот моя структура проекта:
|src
|Database
|Core
|MySQL.php
|Support
start.php
|vendor
composer.json
index.php
Файл MySQL.php:
<?php
namespace Database\Core;
//Some methods here
Файлы index.php и start.php:
//start.php file
<?php
require __DIR__ . '/../vendor/autoload.php';
?>
//index.php file
<?php
use Database\Core;
require __DIR__ . '/src/start.php';
$mysql = new MySQL(); // Gets exception Class 'MySQL' cannot found etc.
?>
И, наконец, моя часть автозагрузки composer.json:
"autoload": {
"psr-4": "Database\\": "src/" // Also tried "src/Database" too
}
В чем проблема? Я очень устал от попыток справиться с этой ситуацией. Пожалуйста, помогите, ребята! Благодарю.
Вам нужно включить пространство имен при инициализации класса:
$mysql = new Database\Core\MySQL();
или же
use Database\Core\MySQL;
$mysql = new MySQL();
Помимо неиспользования права use
Заявление, как уже упоминалось, PSR-4 не работает так. Это скорее псевдоним. Вы, по сути, говорите, что src
равняется Database
, Таким образом, чтобы иметь каталог с именем Database
из этого следует, что полное пространство имен + class равно ‘Database \ Database \ Core \ MySQL`. В этом случае вы хотите использовать PSR-0 или скорректировать определение PSR-4.