---恢复内容开始---
购物车类
代码如下:
1 class Cart 2 { 3 static protected $object; //变量 4 static protected $item = array(); //存储商品信息的数组 5 6 final protected function __construct() 7 { 8 //如果父类中的方法被声明为final,则子类无法覆盖该方法; 如果一个类被声明为final,则不能被继承。禁止在外部使用 9 } 10 11 final protected function __clone() 12 { 13 //同上 14 } 15 16 //实例化类 17 static public function init() 18 { 19 return new self; 20 } 21 22 //获取实例对象 23 static public function getObject() 24 { 25 if( !isset($_SESSION['cart']) || !($_SESSION['cart'] instanceof self) ) 26 { 27 $_SESSION['cart'] = self::init(); 28 self::$object = $_SESSION['cart']; 29 return self::$object; 30 } 31 } 32 33 function __get($name) 34 { 35 return self::$$name; 36 } 37 38 //获取购物车内商品的种类数量 39 function getType() 40 { 41 return count(self::$item); 42 } 43 44 //检测购物车内是否存在某种商品 45 function inItem($goodsId) 46 { 47 if( $this->getType() == 0 ) //若购物车内不存在任何商品,自然也就不存在此种商品 48 { 49 return; //不存在 50 } 51 52 if( array_key_exists($goodsId,self::$item) ) 53 { 54 return true; //存在 55 } 56 else 57 { 58 return false; //不存在 59 } 60 } 61 62 //增加一种商品:若此商品信息已经存在于购物车内,只需增加商品数量;若购物车内不存在此商品的任何信息,需要增加此商品的全部信息 63 function addItem($goodsId,$name,$num,$price) 64 { 65 if( $this->inItem($goodsId) ) 66 { 67 self::$item[$goodsId]['num'] += $num; 68 return; 69 } 70 71 self::$item[$goodsId] = array(); 72 73 self::$item[$goodsId]['name'] = $name; 74 self::$item[$goodsId]['num'] = $num; 75 self::$item[$goodsId]['price'] = $price; 76 77 } 78 79 //减少一种商品的数量 80 function reduceItem($goodsId,$num) 81 { 82 if( $num > self::$item[$goodsId]['num'] ) 83 { 84 unset(self::$item[$goodsId]); 85 } 86 else 87 { 88 self::$item[$goodsId]['num'] -= $num; 89 } 90 } 91 92 //完全去掉某种商品 93 function delItem($goodsId) 94 { 95 unset(self::$item[$goodsId]); 96 } 97 98 //获取一种商品的数量 99 function getNum($goodsId) 100 { 101 return self::$item[$goodsId]['num']; 102 } 103 104 //获取所有商品的数量 105 function getNumber() 106 { 107 $num = 0; 108 foreach( self::$item as $value ) 109 { 110 $num += $value['num']; 111 } 112 return $num; 113 } 114 115 //获取所有商品的价格 116 function getPrice() 117 { 118 $price = 0; 119 foreach( self::$item as $value ) 120 { 121 $price += $value['price']*$value['num']; 122 } 123 return $price; 124 } 125 126 //情况购物车 127 function emptyCart() 128 { 129 self::$item = array(); 130 } 131 }
测试代码,如下:
1 $cart = Cart::getObject(); 2 var_dump($cart); 3 $cart->addItem(1,'PHP','30','50'); 4 $cart->addItem(2,'Java','3','50'); 5 $item = $cart->__get('item'); 6 var_dump($item); 7 $price = $cart->getPrice(); 8 var_dump($price); 9 $num = $cart->getNum(1); 10 var_dump($num); 11 $number = $cart->getNumber(); 12 var_dump($number); 13 $cart->reduceItem(1,20); 14 $item = $cart->__get('item'); 15 var_dump($item);
---恢复内容结束---