agoalofalife / cart
Requires
- php: >=7.1
- illuminate/config: ^5.4
- illuminate/container: ^5.4
- illuminate/database: ^5.4
- illuminate/events: ^5.4
- predis/predis: ^1.1
- symfony/console: ^3.3
- symfony/finder: ^3.3
Requires (Dev)
- fzaninotto/faker: ^1.6
- larapack/dd: ^1.1
- mockery/mockery: ^0.9.9
- phpunit/phpunit: ^6.1
- symfony/var-dumper: ^3.3.5
This package is auto-updated.
Last update: 2024-09-29 05:09:10 UTC
README
购物车
这是什么?
这是一个简单的购物车存储包。它不强制自己的结构,您始终可以更改存储类型,让我们看看它的用法吧!
Обратите внимание, что для использования необходимо иметь :
- 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
上面显示的是配置结构的示例。 storage 和 services 是必填字段,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中,需要
- 
通过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();