<?php /** * 购物车类 */ session_start(); class Cart{ private static $ins = null; private $items = array(); protected function __construct(){} // 获取实例 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 商品ID * @param string $name 商品名称 * @param float $price 商品价格 * @param int $num 购买商品数量 */ public function addItem($id,$name,$price,$num=1){ # 商品已经在购物中,就添加其数量 if($this->hasItem($id)){ $this->incCartNum($id,$num); return true; } $this->items[$id] = array( 'id' => $id, 'name' => $name, 'price' => $price, 'num' => $num ); return true; } /** * 清空购物车 */ public function clearCart(){ $this->items = array(); } /** * 判断一个商品是否存在 * @param int $id 商品ID */ public function hasItem($id){ return array_key_exists($id,$this->items); } /** * 修改购物车中的商品数量 * @param int $id 商品ID * @param int $num 某个商品修改后的数量,即直接把某商品的数量改为$num */ public function modifyCartNum($id,$num=1){ if(!$this->hasItem($id)){ return false; } $this->items[$id]['num'] = $num; } /** * 商品数量增加1 */ public function incCartNum($id,$num=1){ if($this->hasItem($id)){ $this->items[$id]['num'] += $num; } } /** * 商品数量减少1 */ public function decCartNum($id,$num=1){ if($this->hasItem($id)){ $this->items[$id]['num'] -= $num; } if($this->items[$id]['num'] < 1){ $this->deleteCartGoods($id); } } /** * 删除商品 */ public function deleteCartGoods($id){ return unset($this->items[$id]); } /** * 查询购物车商品种类的数量 */ public function getCount(){ return count($this->items); } /** * 查询购物车商品的个数 */ public function getGoodsNum(){ if($this->getCount == 0) return 0; $sum = 0; foreach($this->items as $item){ $sum += $item['num']; } return $sum; } /** * 查询购物车商品的总金额 */ public function getGoodsPriceTotal(){ if($this->getCount == 0) return 0; $price = 0.0; foreach($this->items as $item){ $price += $item['num']*$item['price']; } return $price; } /** * 返回购物车的所有商品 */ public function getCartList(){ if($this->getCount == 0) return false; return $this->items; } } ?>