Исключением не является класс автозагрузчика PHP Composer

Название говорит само за себя. Итак, вот моя структура проекта:

|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
}

В чем проблема? Я очень устал от попыток справиться с этой ситуацией. Пожалуйста, помогите, ребята! Благодарю.

8

Решение

Вам нужно включить пространство имен при инициализации класса:

$mysql = new Database\Core\MySQL();

или же

use Database\Core\MySQL;
$mysql = new MySQL();

Увидеть Использование пространств имен: алиасинг / импорт

18

Другие решения

Помимо неиспользования права use Заявление, как уже упоминалось, PSR-4 не работает так. Это скорее псевдоним. Вы, по сути, говорите, что src равняется Database, Таким образом, чтобы иметь каталог с именем Database из этого следует, что полное пространство имен + class равно ‘Database \ Database \ Core \ MySQL`. В этом случае вы хотите использовать PSR-0 или скорректировать определение PSR-4.

5

По вопросам рекламы [email protected]