用php制作的购物车系统
所以我一直从app.php中得到这个错误,不知道发生了什么。我正在学习一个关于如何用php制作购物车的教程。我会留下代码和错误文本,也许你们有个主意 错误文本: 致命错误:未捕获错误:在中找不到类“Cart\App” C:\xampp\htdocs\cart\bootstrap\app.php:11堆栈跟踪:#0 C:\xampp\htdocs\cart\public\index.php(3):require()#1{main} 在第11行的C:\xampp\htdocs\cart\bootstrap\app.php中 为节省时间,错误来自$app=new app 代码:用php制作的购物车系统,php,composer-php,Php,Composer Php,所以我一直从app.php中得到这个错误,不知道发生了什么。我正在学习一个关于如何用php制作购物车的教程。我会留下代码和错误文本,也许你们有个主意 错误文本: 致命错误:未捕获错误:在中找不到类“Cart\App” C:\xampp\htdocs\cart\bootstrap\app.php:11堆栈跟踪:#0 C:\xampp\htdocs\cart\public\index.php(3):require()#1{main} 在第11行的C:\xampp\htdocs\cart\bootst
<?php
use Cart\App;
use Slim\Views\Twig;
use Illuminate\Database\Capsule\Manager as Capsule;
session_start();
require __DIR__ . '/../vendor/autoload.php';
$app = new App;
$container = $app->getContainer();
$capsule = new Capsule;
$capsule->addConnection([
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'cart',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => ''
]);
$capsule->setAsGlobal();
$capsule->bootEloquent();
Braintree_Configuration::environment('sandbox');
Braintree_Configuration::merchantId('MERCHANT_ID');
Braintree_Configuration::publicKey('PUBLIC_KEY');
Braintree_Configuration::privateKey('PRIVATE_KEY');
require __DIR__ . '/../app/routes.php';
$app->add(new \Cart\Middleware\ValidationErrorsMiddleware($container->get(Twig::class)));
$app->add(new \Cart\Middleware\OldInputMiddleware($container->get(Twig::class)));
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,
]);
$builder->addDefinitions(__DIR__ . '/container.php');
}
}
必须在导入autoload.php
后使用use
语句。9小时后,我解决了它,它是一个拼写错误的名称,而不是我写的名称Nmae,因此,对于每个遇到此问题的人,请检查所有必须正确的名称和类这是唯一的解决方案如果您需要其他信息,如其他文件的信息,请告诉我。您应该共享您的composer.json
。可能还有您定义的Cart\App
类的文件的内容和路径。现在我正在共享它们,App.php
文件的完整路径是什么?在container.php中,我猜$App=new App;错误与此有关这不是真的。什么是假的@rob006?@Zomelock这个答案use
语句不会触发自动加载,在需要自动加载之前,您可以(并且应该)将其保留在文件内容的顶部。因此,Cart
命名空间映射到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,
]);
$builder->addDefinitions(__DIR__ . '/container.php');
}
}
<?php
use function DI\get;
use Slim\Views\Twig;
use Cart\Basket\Basket;
use Cart\Models\Product;
use Cart\Models\Payment;
use Slim\Views\TwigExtension;
use Interop\Container\ContainerInterface;
use Cart\Support\Storage\SessionStorage;
use Cart\Support\Storage\Contracts\StorageInterface;
use Cart\Validation\Contracts\ValidatorInterface;
use Cart\Validation\Validator;
use Cart\Models\Order;
use Cart\Models\Customer;
use Cart\Models\Address;
return [
'router' => get(Slim\Router::class),
ValidatorInterface::class => function (ContainerInterface $c) {
return new Validator;
},
StorageInterface::class => function (ContainerInterface $c) {
return new SessionStorage('cart');
},
Twig::class => function (ContainerInterface $c) {
$twig = new Twig(__DIR__ . '/../resources/views', [
'cache' => false
]);
$twig->addExtension(new TwigExtension(
$c->get('router'),
$c->get('request')->getUri()
));
$twig->getEnvironment()->addGlobal('basket', $c->get(Basket::class));
return $twig;
},
Product::class => function (ContainerInterface $c) {
return new Product;
},
Order::class => function (ContainerInterface $c) {
return new Order;
},
Customer::class => function (ContainerInterface $c) {
return new Customer;
},
Address::class => function (ContainerInterface $c) {
return new Address;
},
Payment::class => function (ContainerInterface $c) {
return new Payment;
},
Basket::class => function (ContainerInterface $c) {
return new Basket(
$c->get(SessionStorage::class),
$c->get(Product::class)
);
}
];