Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用php制作的购物车系统_Php_Composer Php - Fatal编程技术网

用php制作的购物车系统

用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

所以我一直从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

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)
        );
    }
];