v0.1.0 2017-08-01 18:59 UTC

This package is auto-updated.

Last update: 2024-09-29 05:09:10 UTC


README

购物车

Scrutinizer Code Quality Code Coverage License Build Status

这是什么?

这是一个简单的购物车存储包。它不强制自己的结构,您始终可以更改存储类型,让我们看看它的用法吧!

Обратите внимание, что для использования необходимо иметь :
- Mysql не ниже версии 5.7.8 (Если вы используете драйвер по-умолчанию)
- Версия PHP не ниже 7.1

安装

只需执行

composer require agoalofalife/cart

安装配置

最初是...

每次您创建一个购物车类时,它都可以有自己的信息存储方式(驱动程序)。

例如,数据库驱动程序有连接设置、表名等。让我们看看我们如何加载配置

$kernel = new \Cart\Kernel();
$kernel->bootstrapping();
$kernel->loadConfiguration(new \Cart\SourcesConfigurations\File(__DIR__ . '/config/cart.php'));

loadConfiguration 方法接受类型为 SourceConfiguration 的对象,您可以使用默认的 File 类,传入文件路径,或者编写自己的类,实现 SourceConfiguration

   // Сервис - провайдеры для настройки ваших драйверов
    'services' => [
        Cart\ServiceProviders\DatabaseServiceProviders::class,
        \Cart\ServiceProviders\RedisServiceProvider::class,
    ],
    'drivers' => [
    // конфигурации в зависимости от драйвера
        'database' => [
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'test',
            'username'  => 'test',
            'password'  => 'test',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => ''
        ],
        'redis' => [
            'prefix' => 'cart',
            'scheme' => 'tcp',
            'host'   => '127.0.0.1',
            'port'   => 6379,
        ]
    ],
    // выбранный текущий драйвер
    'storage' => \Cart\Drivers\DatabaseDriver::class

上面显示的是配置结构的示例。 storageservices 是必填字段,drivers 取决于您的驱动程序设置。在这个阶段,您可以复制这个示例并添加您的设置。

驱动程序

目前支持两种类型的驱动程序:Redis 和数据库。

使用

您将使用哪种驱动程序取决于配置文件中的设置

    'storage' => \Cart\Drivers\DatabaseDriver::class

现在看客户端代码

$kernel = new \Cart\Kernel();
$kernel->bootstrapping();
$kernel->loadConfiguration((new \Cart\SourcesConfigurations\File(__DIR__ . '/config/cart.php')));
$kernel->loadServiceProvider();
// получение драйвера
$storage = $kernel->getStorage();

在获取到驱动程序后,我们可以向购物车添加商品,删除商品,更改数量,并完全清空购物车。

// Добавление товара в корзину
// id и user_id обязательные поля, так как это индексы по которым происходят другие операции
// вы в праве добавить больше данных..
$storage->add(['id' => 3, 'user_id' => 1]);

// очистить корзину передав user_id
$storage->clear(1);

// изменить кол -во 
$storage->change(['id' => 5, 'user_id' => 1, 'count' => 0])

// удалить конкретный товар из корзины 
$storage->remove(['id' => 2, 'user_id' => 1]);

// Получить список всех товаров по user_id
$storage->get(1);

此外,还可以更改商品的价格(例如,折扣)。

// Поле price обязательно.
// Сделать фиксированную скидку
$storage->discount(new \Cart\DiscountStrategy\FixDiscountStrategy(100), ['id' => 3, 'user_id' => 1, 'price' => 200]);

// Осуществить скидку по проценту
$storage->discount(new \Cart\DiscountStrategy\PercentageStrategy(20), ['id' => 3, 'user_id' => 1, 'price' => 200]);

您可以按照自己的意愿扩展价格更改策略,通过实现 DiscountContract 接口。

编写自己的驱动程序

编写驱动程序的三个简单步骤

  • 根据示例创建自己的 ServiceProvider 用于初始配置,并将其添加到配置文件中。
    'services' => [
        Cart\ServiceProviders\DatabaseServiceProviders::class,
        \Cart\ServiceProviders\RedisServiceProvider::class,
        ...
    ]
  • 实现 CartDriverContract 接口和 DiscountDriverContract 用于折扣。

  • 将驱动程序添加到配置文件中

  'storage' => \Cart\Drivers\DatabaseDriver::class

Laravel集成

为了将库集成到Laravel中,需要

  • 通过composer安装

  • 执行命令

./vendor/bin/cart migrate:laravel   

这样就将配置文件和迁移文件复制到Laravel的源目录

  • 从容器中获取驱动程序并与之交互(预先安装所有设置,并执行迁移,如果使用数据库驱动程序的话。)
app('cart')-> ...

简单使用

  • 安装包

composer require agoalofalife/cart

  • 设置自己的数据库配置
  'drivers' => [
        'database' => [
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'test',
            'username'  => 'test',
            'password'  => 'test',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => ''
        ]
  • 执行创建表的命令 ./vendor/bin/cart cart:migrate

  • 开始使用数据库驱动程序。

$kernel = new \Cart\Kernel();
$kernel->bootstrapping();
$kernel->loadConfiguration((new \Cart\SourcesConfigurations\File(__DIR__ . '/cart.php')));
$kernel->loadServiceProvider();
$storage = $kernel->getStorage();