为什么找不到"Class 'DI\Bridge\Slim\App'"? PHP
Why can "Class 'DI\Bridge\Slim\App'" not be found? PHP
我正在尝试为我的网站创建购物车,我正在按照以下教程操作:https://www.youtube.com/watch?v=tRh467FX12U&list=PLfdtiltiRHWH9JN1NBpJRFUhN96KBfPmd&index=2
在教程中,他使用了来自 GitHub 的 3 个不同的导入,这是使用 composer 在终端中安装它们的方法:
rosscurrie = ~用户名
@Ross-Air = Macbook 名称
MobileMastersNew = 保存所有网站文件的文件夹名称
composer = 全局安装
需要 <...> = 来自 GitHub
的进口
- rosscurrie@Rosss-Air MobileMastersNew % composer require slim/slim:^4.0
- rosscurrie@Rosss-Air MobileMastersNew % composer require slim/twig-view:^3.0
- rosscurrie@Rosss-Air MobileMastersNew % composer require php-di/slim-bridge
- rosscurrie@Rosss-Air MobileMastersNew % composer require illuminate/database
我对 Laravel 的经验有限,但并非完全不熟悉。当我尝试加载 index.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
我的文件夹目录如下:
我的../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"
}
}
}
你应该在自动加载后使用 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;
您使用了错误的命名空间 use DI\Bridge\Slim\App as DIBridge;
。 DI
包中不再有 App
class。
改为
使用下面的代码use DI\Bridge\Slim\Bridge as DIBridge;
您的 composer.json 需要看起来与教程中的几乎完全一样。我有同样的问题。要要求旧版本,您只需执行 composer remove slim/slim
然后 composer require slim/slim ^3.0
.
特别是,您的 php-di 需要低于 v1.1。我的 composer.json:
{
{
"require": {
"slim/slim": "^3.0",
"slim/twig-view": "^2.1",
"illuminate/database": "^5.2",
"php-di/slim-bridge": "v1.0.2"
},
"autoload": {
"psr-4": {
"Cart\": "app/"
}
}
}
我正在尝试为我的网站创建购物车,我正在按照以下教程操作:https://www.youtube.com/watch?v=tRh467FX12U&list=PLfdtiltiRHWH9JN1NBpJRFUhN96KBfPmd&index=2
在教程中,他使用了来自 GitHub 的 3 个不同的导入,这是使用 composer 在终端中安装它们的方法:
rosscurrie = ~用户名
@Ross-Air = Macbook 名称
MobileMastersNew = 保存所有网站文件的文件夹名称
composer = 全局安装
需要 <...> = 来自 GitHub
的进口- rosscurrie@Rosss-Air MobileMastersNew % composer require slim/slim:^4.0
- rosscurrie@Rosss-Air MobileMastersNew % composer require slim/twig-view:^3.0
- rosscurrie@Rosss-Air MobileMastersNew % composer require php-di/slim-bridge
- rosscurrie@Rosss-Air MobileMastersNew % composer require illuminate/database
我对 Laravel 的经验有限,但并非完全不熟悉。当我尝试加载 index.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
我的文件夹目录如下:
我的../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"
}
}
}
你应该在自动加载后使用 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;
您使用了错误的命名空间 use DI\Bridge\Slim\App as DIBridge;
。 DI
包中不再有 App
class。
改为
使用下面的代码use DI\Bridge\Slim\Bridge as DIBridge;
您的 composer.json 需要看起来与教程中的几乎完全一样。我有同样的问题。要要求旧版本,您只需执行 composer remove slim/slim
然后 composer require slim/slim ^3.0
.
特别是,您的 php-di 需要低于 v1.1。我的 composer.json:
{
{
"require": {
"slim/slim": "^3.0",
"slim/twig-view": "^2.1",
"illuminate/database": "^5.2",
"php-di/slim-bridge": "v1.0.2"
},
"autoload": {
"psr-4": {
"Cart\": "app/"
}
}
}