rodacker / cart
Requires (Dev)
- phpunit/phpunit: ^6.1
This package is auto-updated.
Last update: 2024-09-17 17:42:50 UTC
README
这是一个简单的PHP购物车库,提供多个接口以方便适应您的需求。
您可以在以下位置找到基本示例实现:
https://gitlab.com/rodacker/cart-example
重要
此库正在积极开发中,不建议在生产环境中使用
安装
建议通过Composer安装此包
composer require rodacker/cart
用法
创建购物车
使用new Cart()
创建购物车对象,传递一个实现了CartIdentifierInterface
的标识对象、一个实现了CartStorageInterface
的存储对象以及来自moneyphp/money
库的Currency
对象
标识和存储
$cart = new Cart(new Session(), new SessionStorage(), new Currency('EUR');
此包包含两个基本标识类
Rodacker\Cart\Identifier\Cookie
Rodacker\Cart\Identifier\Session
以及一个
SessionStorage
类
Rodacker\Cart\Storage\SessionStorage
这两个标识类都是基于原生PHP会话和cookie函数。这对于独立的PHP应用程序很有用,但对于使用自己会话实现的框架(如Symfony)可能会存在问题。在这种情况下,您必须创建自己的实现
:CartIdentifierInterface
的标识类。
与SessionStorage
类类似。它使用原生PHP会话函数来存储购物车。如果您将替换为实现了CartSessionInterface
的自定义类,则可以正常工作。
交互购物车项
购物车提供了一些与购物车中存储的项目交互的功能。
购物车项
此包包含一个CartItem
类。此对象尚未实现任何接口,但在将来将实现。
创建新项
$product
需要是一个实现了CartItemInterface
的类
$item = new CartItem($product, Money::EUR($price), $quantity);
$price
是表示给定货币中最小可能值的Money
对象,例如100 = 1 €或900 = 9.99 €请阅读Money文档了解如何使用`Money`对象$quantity
是可选的(默认为1
),需要是一个`integer > 1`- 产品/文章类
截至目前,此包尚未包含Product或Article类,因为我认为在大多数情况下,您将通过实现CartItemInterface
使现有的产品类可用。我将在不久的将来添加一个简单的类。
您可以在购物车示例中找到一个基本的Article
类
$name
是一个字符串
$article = new Article($name, $price, $images);
$images
是一个实现CartImageInterface
的对象数组。如果不需要在购物车中显示图像,相关函数可以返回一个空数组$quantity
是可选的(默认为1
),需要是一个`integer > 1`- 添加项
传递一个CartItem
对象到该函数。如果购物车包含相同产品的项,则数量将添加到现有项中。
移除项**
/** @var CartItemInterface $item */
$cart->addItem($item);
传递一个CartItem
对象到该函数。
更新项数量
/** @var CartItemInterface $item */
$cart->removeItem($item);
传递CartItem
对象、数量差异和减少标志(默认为false
)到该函数。最小数量限制为1
...待续
$cart->updateItemQuantity($item, $diff, $decrease = false);
待办事项
待办事项
一些重构想法和未来的功能
- 添加属性支持
- 添加价格操作规则(例如优惠券、按项、按购物车等)
- 添加运费支持(对此不太确定)
- 添加税务支持
- 添加更多约束和异常
- 为约束、异常和边缘情况编写更多测试
- 基于
symfony/http-foundation
包创建新的标识符和存储实现,该实现可以可选使用。 - 评估事件调度器集成
支持
请访问Gitlab项目页面,并使用问题追踪器提交任何反馈或遇到的问题。
许可证
本项目是开源软件,根据MIT许可证授权。