Автозагрузка пространств имен

Я создаю свою собственную инфраструктуру MVC для простого веб-сайта, и я хочу использовать пространства имен, но я не знаю, как их автоматически загружать. Вот что я попробовал до сих пор:

у меня есть init.php файл с функцией автозагрузки:

    spl_autoload_register(function($class){
$file = __DIR__ . '/../' . str_replace('\\', '/', $class) .'.php';
echo $file;
if (file_exists($file)) {
require_once $file;
echo 'yes';
}

use App\Core\App as App;

$app = new App;

Этот код возвращает «да», поэтому он находит файл приложения. Но он также возвращает фатальную ошибку: D:\xampp\htdocs\MVC\App/../App/Core/App.phpyes
Fatal error: Class 'App\Core\App' not found in D:\xampp\htdocs\MVC\App\init.php on line 28

Строка 28 $app = new App;

Вот как я делаю пространство имен моего файла приложения:

    <?php

namespace App\Core\App;

class App
{
.....

Структура файла следующая:

| App
|--| Core
|--|--| App.php
...
| init.php

Есть идеи почему?

0

Решение

Вместо того, чтобы создавать свой собственный автозагрузчик, просто используйте тот, который встроен в composer. Вы просто добавляете следующий сегмент в composer.json файл и готово:

"autoload": {
"psr-4": {
"": "dir_where_namespaces_start...usually_src"}
}

Кроме того, вы не можете создать и «инфраструктуру mvc», потому что архитектура MVC — это то, что реализует код приложения, а не инфраструктура.

1

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector