thinkphp做的session购物车,求详细代码。有完整例子的可以发下。非常感谢
2个回答
展开全部
<?php
class CartTool {
private static $ins = null;
private $items = array();
final protected function __construct() {
}
final protected function __clone() {
}
// 获取实例
protected static function getIns() {
if(!(self::$ins instanceof self)) {
self::$ins = new self();
}
return self::$ins;
}
// 把购物车的单例对象放到session里
public static function getCart() {
if(!isset($_SESSION['cart']) || !($_SESSION['cart'] instanceof self)) {
$_SESSION['cart'] = self::getIns();
}
return $_SESSION['cart'];
}
/*
添加商品
param int $id 商品主键
param string $name 商品名称
param float $ 商品价格
param int $num 购物数量
*/
public function addItem($id,$name,$price,$brand,$thumb,$num=1) {
if($this->hasItem($id)) { // 如果该商品已经存在,则直接加其数量
$this->incNum($id,$num);
return;
}
$item = array();
$item['id'] = $id;
$item['name'] = $name;
$item['price'] = $price;
$item['brand'] = $brand;
$item['thumb'] = $thumb;
$item['num'] = $num;
$this->items[$id] = $item;
return $this->items[$id];
}
/*
修改购物车中的商品数量
param int $id 商品主键
param int $num 某个商品修改后的数量,即直接把某商品的数量改为$num
*/
public function modNum($id,$num=1) {
if(!$this->hasItem($id)) {
return false;
}
$this->items[$id]['num'] = $num;
}
/*
商品数量增加1
*/
public function incNum($id,$num=1) {
if($this->hasItem($id)) {
$this->items[$id]['num'] += $num;
}
}
/*
商品数量减少1
*/
public function decNum($id,$num=1) {
if($this->hasItem($id)) {
$this->items[$id]['num'] -= $num;
}
// 如果减少后,数量为0了,则把这个商品从购物车删掉
if($this->items[$id]['num'] < 1) {
$this->delItem($id);
}
}
/*
判断某商品是否存在
*/
public function hasItem($id) {
return array_key_exists($id,$this->items);
}
/*
删除商品
*/
public function delItem($id) {
unset($this->items[$id]);
}
/*
查询购物车中商品的种类
*/
public function getCnt() {
return count($this->items);
}
/*
查询购物车中商品的个数
*/
public function getNum() {
if($this->getCnt() == 0) {
return 0;
}
$sum = 0;
foreach($this->items as $item) {
$sum += $item['num'];
}
return $sum;
}
/*
查询购物车中商品的总金额
*/
public function getPrice() {
if($this->getCnt() == 0) {
return 0;
}
$price = 0.0;
foreach($this->items as $item) {
$price += $item['num'] * $item['price'];
}
return $price;
}
/*
返回购物车中的所有商品
*/
public function all() {
return $this->items;
}
/*
清空购物车
*/
public function clear() {
$this->items = array();
}
}
以上是类文件,需要引入的。
$cart = CartTool::getCart();
$car_goods_list = $cart->all();//获取商品列表
$goods_num = $cart->getNum();//商品个数
$goods_sum_price =$cart->getPrice();//总价格
$cart->addItem($goods_id,$goods_list['goods_name'],$goods_list['shop_price'],$goods_list['brand'],$goods_list['goods_thumb'],$num);//增加一件商品到购物车
$cart->clear();//清空购物车
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询