koind / multi-basket
这是一个可以用于任何PHP框架的篮子通用组件。
1.0
2018-07-17 20:52 UTC
Requires
- php: ^7.2
Requires (Dev)
- phpunit/phpunit: ^7
This package is not auto-updated.
Last update: 2024-09-29 06:02:32 UTC
README
这是一个可以用于任何PHP框架的篮子通用组件。
安装
从您的终端运行以下命令
composer require "koind/multi-basket: ^1.0"
或者将此添加到您的composer.json文件中的require部分
"koind/multi-basket": "^1.0"
然后运行 composer update
使用方法
首先,您需要插入所需的类并初始化这些类。接下来,通过传递适当的参数创建Cart类的实例。恭喜,您现在可以使用篮子的功能了。
<?php use koind\storage\LaravelHybridStorage; use koind\Cart; use koind\cost\SimpleCost; use koind\cost\MinCost; use koind\cost\FridayCost; use koind\cost\NewYearCost; require __DIR__ . '/vendor/autoload.php'; $storage = new LaravelHybridStorage('cart'); $simpleCost = new SimpleCost(); $calculator = new MinCost( new FridayCost($simpleCost, 5, date('Y-m-d')), new NewYearCost($simpleCost, date('m'), 3) ); $cart = new Cart($storage, $calculator); $cart->add(5, 6, 100);
可用方法
以下方法可用
koind\Cart
public function getItems(): array public function add(int $id, int $count, int $price): void public function subtractCount(int $id, int $count, int $price): void public function getCost(): float public function remove(int $id): void public function clear(): void
koind\CartItem
public function getId(): int public function getCount(): float public function getPrice(): float public function getCost(): float
koind\cost\CalculatorInterface
此接口实现了所有必需的折扣类。
public function getCost(array $items): float
koind\storage\StorageInterface
此接口实现了所有所需的数据存储类。
public function load(): array public function save(array $items): void
示例用法类 Cart
获取购物车中所有产品
$this->cart->getItems();
将新产品添加到您的购物车
$this->cart->add(3, 4, 1000);
更改产品的数量
$this->cart->subtractCount(3, 2, 1000);
获取商品总价,包括所有折扣
$this->cart->getCost();
从购物车中移除产品
$this->cart->remove(3);
清空购物车
$this->cart->clear();
不同的存储
不同框架的存储实现示例。
koind\storage\LaravelSessionStorage - 用于Laravel
<?php namespace koind\storage; use koind\CartItem; use Illuminate\Contracts\Session\Session; class LaravelSessionStorage implements StorageInterface { private $session; private $sessionKey; public function __construct(Session $session, $sessionKey = 'cart') { $this->session = $session; $this->sessionKey = $sessionKey; } /** * @return CartItem[] */ public function load(): array { return $this->session->get($this->sessionKey, []); } /** * @param CartItem[] $items */ public function save(array $items): void { $this->session->put($this->sessionKey, $items); } }
koind\storage\SymfonySessionStorage - 用于Symfony
<?php namespace koind\storage; use koind\CartItem; use Symfony\Component\HttpFoundation\Session\Session; class SymfonySessionStorage implements StorageInterface { private $session; private $sessionKey; public function __construct(Session $session, $sessionKey = 'cart') { $this->session = $session; $this->sessionKey = $sessionKey; } /** * @return CartItem[] */ public function load(): array { return $this->session->get($this->sessionKey, []); } /** * @param CartItem[] $items */ public function save(array $items): void { $this->session->set($this->sessionKey, $items); } }
koind\storage\YiiSessionStorage - 用于Yii
<?php namespace koind\storage; use koind\CartItem; use Yii; class YiiSessionStorage implements StorageInterface { private $sessionKey; public function __construct($sessionKey = 'cart') { $this->sessionKey = $sessionKey; } /** * @return CartItem[] */ public function load(): array { return Yii::$app->session->get($this->sessionKey, []); } /** * @param CartItem[] $items */ public function save(array $items): void { Yii::$app->session->set($this->sessionKey, $items); } }
如果您需要其他框架的组件,您可以轻松实现接口 StorageInterface
测试
从您的终端运行以下命令
phpunit