rodacker/cart

简单的PHP购物车库

0.2.0 2017-06-25 23:26 UTC

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许可证授权。