<?php
//购物车类
//实现方式:单例加session
//方法:
/***
添加商品
修改商品
商品+1
商品-1
删除商品
显示商品列表
计算商品的总类
计算商品的总数量
计算商品的总价格
清空购物车
**/
class cart{
static protected $ins = false;
protected $items = array();
//构造函数
final protected function __construct(){}
//克隆
final protected function __clone(){}
//实例化类的静态方法
protected function getIns(){
if(self::$ins === false){
self::$ins = new self();
}
return self::$ins;
}
//提供公共的接口,并把实例化的对象赋值到session里面
static public function getCart(){
//判断是否存在购物车
if(!isset($_SESSION['cart']) || !($_SESSION['cart'] instanceof self)){
$_SESSION['cart'] = self::getIns();
}
return $_SESSION['cart'];
}
//判断商品是否已经存在购物车
protected function exisItem($id){
return array_key_exists($id,$this->items);
}
//添加商品
public function addItem($id,$name,$shop_price,$num){
if(!$this->exisItem($id)){
$this->items[$id] = array();
$this->items[$id]['name'] = $name;
$this->items[$id]['shop_price'] = $shop_price;
$this->items[$id]['num'] = $num;
}else{
$this->items[$id]['num'] += $num;
}
}
//修改商品
public function modItem($id,$num){
if(!$this->exisItem($id)){
return;
}
$this->items[$id]['num'] = $num;
}
//商品+1
public function incItem($id){
if(!$this->exisItem($id)){
return;
}
$this->items[$id]['num'] += 1;
}
//商品-1
public function decItem($id){
if(!$this->exisItem($id)){
return;
}
if($this->itemw[$id]['num'] == 0){
$this->delItem($id);
return;
}
$this->items[$id]['num'] -= 1;
}
//删除商品
public function delItem($id){
if(!$this->exisItem($id)){
return;
}
unset($this->items[$id]);
}
//显示商品列表
public function listItem(){
return $this->items;
}
//计算商品的总类
public function cntItem(){
return count($this->items);
}
//计算商品的总数量
public function totalItem(){
if(!$this->cntItem()){
return 0;
}
$total = 0;
foreach ($this->items as $v){
$total += $v['num'];
}
return $total;
}
//计算商品的总价格
public function totalPrice(){
if(!$this->cntItem()){
return 0;
}
$totalPrice = 0;
foreach ($this->items as $v){
$totalPrice += $v['shop_price']*$v['num'];
}
return $totalPrice;
}
//清空购物车
public function clear(){
$this->items = array();
}
}
?>