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();//清空購物車