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();