Я следил Учебник Алекса Гарета по созданию корзины покупок.
Я запас, потому что я думаю, что 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
Попробуй поменять autoload
к следующему:
"autoload": {
"psr-4": {
"Order\\": ""}
}
Вы должны изменить свою автозагрузку, чтобы настроить таргетинг на 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).