购物车类实现
来源:互联网 发布:彩票统计分析软件 编辑:程序博客网 时间:2024/05/22 14:09
class cart { static protected $ins = null; protected $basket = array(); protected function __construct() { } static protected function getIns() { if(self::$ins == null) { self::$ins = new self(); } return self::$ins; } static public function getCart() { // 如果session['cart']不存在,或者存在但不是cart类的实例 if(!isset($_SESSION['cart']) || !($_SESSION['cart'] instanceof self)) { $_SESSION['cart'] = self::getIns(); } return $_SESSION['cart']; } // 添加商品到购物车 // 有商品名称,商品id,商品本店价格,购买数量 public function addItem($id,$name,$shop_price,$num) { if(!$this->hasItem($id)) { $this->basket[$id] = array('name'=>$name,'shop_price'=>$shop_price,'num'=>$num); } else { $this->basket[$id]['num'] += $num; } } // 删除商品 public function delItem($id) { if($this->hasItem($id)) { unset($this->basket[$id]); } } // 判断某商品是否存在 public function hasItem($id) { return array_key_exists($id,$this->basket); } // 修改商品数量 public function modItem($id,$num) { if($num == 0) { $this->delItem($id); return; } if($this->hasItem($id)) { $this->basket[$id]['num'] = $num; } } // 商品加1 public function incItem($id) { if($this->hasItem($id)) { $this->basket[$id]['num'] += 1; } } // 商品-1 public function decItem() { if($this->hasItem($id)) { $this->basket[$id]['num'] -= 1; } // 要是减到0了,则删掉 if($this->basket[$id]['num'] == 0) { $this->delItem($id); } } // 计算商品种类 public function cnt() { return count($this->basket); } // 返回商品列表 public function items() { return $this->basket; } // 计算商品的个数 public function getCount() { if($this->cnt() == 0) { return 0; } $count = 0; foreach($this->basket as $v) { $count += $v['num']; } return $count; } // 计算商品的总价格 public function getPrice() { if($this->cnt() == 0) { return 0; } $price = 0; foreach($this->basket as $v) { $price += $v['num'] * $v['shop_price']; } return $price; } // 清空购物车 public function clear() { $this->basket = array(); }}