Почему "Class 'DI \ Bridge \ Slim \ App'" нельзя найти? PHP - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь создать корзину покупок для своего веб-сайта, следуя приведенному ниже учебнику: https://www.youtube.com/watch?v=tRh467FX12U&list=PLfdtiltiRHWH9JN1NBpJRFUhN96KBfPmd&index=2

В учебнике он использует 3 различных импорта из GitHub, и этот Как установить их в терминале, используя composer:

rosscurr ie = Имя пользователя

@ Ross-Air = Имя Macbook

MobileMastersNew = Имя папки, в которой хранятся все файлы веб-сайта

composer = установлено глобально

требуется <...> = импорт из GitHub

  1. rosscurrie@Rosss-Air MobileMastersNew% composer требуется тонкий / тонкий: ^ 4.0
  2. rosscurrie@Rosss-Air MobileMastersNew% composer требуется тонкий / просмотр веточек: ^ ​​3.0
  3. rosscurrie@Rosss-Air MobileMastersNew% composer требуется php -di / slim-bridge
  4. rosscurrie@Rosss-Air MobileMastersNew% composer требуется подсветка / база данных

У меня ограниченный опыт работы с Laravel, но я не совсем незнаком. Когда я пытаюсь загрузить страницу индекса. php, появляется следующее сообщение:

Fatal error: Uncaught Error: Class 'DI\Bridge\Slim\App' not found in /Users/rosscurrie/Sites/MobileMastersNew/app/App.php:8 Stack trace: #0 /Users/rosscurrie/Sites/MobileMastersNew/vendor/composer/ClassLoader.php(444): include() #1 /Users/rosscurrie/Sites/MobileMastersNew/vendor/composer/ClassLoader.php(322): Composer\Autoload\includeFile('/Users/rosscurr...') #2 [internal function]: Composer\Autoload\ClassLoader->loadClass('Cart\\App') #3 /Users/rosscurrie/Sites/MobileMastersNew/bootstrap/app.php(9): spl_autoload_call('Cart\\App') #4 /Users/rosscurrie/Sites/MobileMastersNew/public/index.php(3): require('/Users/rosscurr...') #5 {main} thrown in /Users/rosscurrie/Sites/MobileMastersNew/app/App.php on line 8

Моя папка выглядит следующим образом:

enter image description here

Мой ../MobileMasters/app/App.php:

<?php

namespace Cart;

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

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

        //
    }
}

Мой ../MobileMasters/bootstrap/app.php:

<?php

session_start();

use Cart\App;

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

$app  = new App;

Мой ../MobileMasters/public/.htaccess файл:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]

Мой ../MobileMasters/public/index.php:

<?php

require __DIR__ . '/../bootstrap/app.php';

$app->run();

Мой. ./MobileMasters/vendor/autoload.php это:

<?php

// autoload.php @generated by Composer

require_once __DIR__ . '/composer/autoload_real.php';

return ComposerAutoloaderInit2e9ebb4be0f95ed0dbfb26486b8ba4b7::getLoader();

Наконец, мой ../MobileMasters/composer.json это:

{
    "require": {
        "slim/slim": "^4.0",
        "slim/twig-view": "^3.0",
        "php-di/slim-bridge": "^3.0",
        "illuminate/database": "^7.2"
    },
    "autoload": {
        "psr-4": {
            "Cart\\": "app"
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 23 марта 2020

попробуйте это

MobileMasters / bootstrap / app. php is:

<?php

use Cart\App;

session_start();

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

$app = new App;

require __DIR__ . '/../app/routes.php';

?>
0 голосов
/ 23 марта 2020

Вы должны использовать оператор use после автозагрузки:

<?php

namespace Cart;

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

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

        //
    }
}

И также изменить этот файл:

session_start();

require __DIR__ . '/../vendor/autoload.php';
use Cart\App;

$app  = new App;
...