Неустранимая ошибка из-за composer.json в фреймворке slim tree

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

«Неустранимая ошибка: необработанная ошибка: класс ‘Order \ App’ не найден в C: \ xampp \ htdocs \ order \ bootstrap \ app.php: 10 Трассировка стека: # 0 C: \ xampp \ htdocs \ order \ public \ index. php (3): require () # 1 {main} в C: \ xampp \ htdocs \ order \ bootstrap \ app.php в строке 10 «

файл composer.json

    {
"require": {
"slim/slim": "^3.0",
"slim/twig-view": "^2.4",
"php-di/slim-bridge": "^2.0",
"illuminate/database": "^5.6"},

"autoload": {
"psr-4": {
"Order\\": "Order"}
}
}

Класс приложения

    namespace Order;

use DI\ContainerBuilder;
use DI\Bridge\Slim\App as DIBridge;

class App extends DIBridge{

protected function configureContainer(ContainerBuilder $builder){
$builder->addDefinitions([
'settings.displayErrorDetails' => true
]);

//
}

}

app.php файл, который является файлом начальной загрузки

<?php

use Order\App;

session_start();

require __DIR__ . '/../vendor/autoload.php';
//require __DIR__ . '/../app/App.php';

$app = new App;

Если я откомментирую нужную строку, где я вытащил в App.php, он работает нормально.

Структура каталогов:

структура папок

ОС: Windows 10

0

Решение

Попробуй поменять autoload к следующему:

"autoload": {
"psr-4": {
"Order\\": ""}
}
0

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

Вы должны изменить свою автозагрузку, чтобы настроить таргетинг на app/ вместо папки, так как там, где ваш App.php расположен:

"autoload": {
"psr-4": {
"Order\\": "app/"}
}

По сути, это говорит автозагрузчику, что все классы, которые имеют пространство имен Order\ существует в app/,

Так что теперь, если вы хотите создать подпапки в app/:

app/
App.php
Foo/
Bar.php

затем Bar.php должно иметь пространство имен Order\Foo и вы получите доступ к этому классу с помощью: $bar = new Order\Foo\Bar(),

Замечания: Здесь важен корпус файла / папки. Корпус пространства имен и имя класса должен имеют тот же корпус, что и файлы и папки. В противном случае он все равно будет работать для вас в Windows, но не будет работать в других ОС (например, в Linux).

0