一个精简的购物车类

  1. /*
  2. * [原创] 用一个SESSION 实现在精典购物车
  3. * Author: Rock
  4. * Time: 2007-05-01
  5. * 因为一个小程序用到购物车,风有不小不过功能太多。
  6. * 今天就写了一个够自己用的购物车,精简型。
  7. * 大家如果想用,可以根据自己的需求修改功能。
  8.  
  9. 1、添加商品
  10. 2、移除商品
  11. 3、修改商品数量
  12. 4、清空购物车
  13. 5、计算总额
  14. Array(
  15.     [gId_1] => Array (
  16.             [price] => 20
  17.             [number] => 500
  18.         )
  19.     [gId_2] => Array (
  20.             [price] => 20
  21.             [number] => 20
  22.         )
  23. }
  24. */
  25.  
  26. ini_set('error_reporting', E_ALL);
  27.  
  28. class MyCart{
  29.     private $cartName ;
  30.  
  31.     public function __construct($cartName){
  32.         session_start();
  33.         $this->cartName = $cartName;
  34.         if (!isset($_SESSION[$cartName])){
  35.             $_SESSION[$cartName]=array();
  36.         }
  37.     } 
  38.     //add one product
  39.     public function addItem($gId, $gNum = 1){
  40.         if(empty($gId)) die('无此商品');
  41.         if($this->isExistInCart($gId) == false){
  42.             $_SESSION[$this->cartName][$gId]['number'] = $gNum;
  43.             $_SESSION[$this->cartName][$gId]['price'] = $this->getGoodsPrice($gId);
  44.             return true;
  45.         }else{
  46.             echo('已经在您的购物车中了!');
  47.             return false;
  48.         }
  49.     }
  50.     // delete one product
  51.     public function delItem($gId){
  52.         if(empty($gId)) die('删除失败,请重试');
  53.         if($this->isExistInCart($gId) == false) return false;
  54.         unset($_SESSION[$this->cartName][$gId]);
  55.         return true;
  56.     }
  57.     //modify number of one product
  58.     public function editItem($gId, $gNum){
  59.         if(empty($gId)) die('编辑失败,请重试');
  60.         if($this->isExistInCart($gId) == false) return false;
  61.         $_SESSION[$this->cartName][$gId]['number'] = $gNum;
  62.         return true;
  63.     }
  64.  
  65.     //empty cart
  66.     public function emptyCart(){
  67.         //$_SESSION[$this->cartName] = NULL;
  68.         unset($_SESSION[$this->cartName]);
  69.     }
  70.     // get total Price from Cart
  71.     public function totalCartPrice(){
  72.         $tPrice = 0;
  73.         if(!isset($_SESSION[$this->cartName])) return $tPrice;
  74.  
  75.         $arrCart = $_SESSION[$this->cartName];
  76.        
  77.         if(is_array($arrCart) && count($arrCart) > 0){
  78.             foreach($arrCart as $key=>$val){
  79.                 $tPrice += $val['number'] * $val['price'];
  80.             }
  81.         }
  82.         return $tPrice;
  83.     }
  84.     // get total goods number from cart
  85.     public function totalCartNumber(){
  86.         $tNum = 0;
  87.         if(!isset($_SESSION[$this->cartName])) return $tNum;
  88.  
  89.         $arrCart = $_SESSION[$this->cartName];
  90.         if(is_array($arrCart) && count($arrCart) > 0){
  91.             foreach($arrCart as $key=>$val){
  92.                 $tNum += $val['number'];
  93.             }
  94.         }
  95.         return $tNum;
  96.     } 
  97.     // check goodsid is or not exist in cart
  98.     private function isExistInCart($gId){
  99.         return isset($_SESSION[$this->cartName][$gId]) ? true : false ;
  100.     } 
  101.     // get goods price from DB
  102.     private function getGoodsPrice($gId){
  103.         // extends for yourself
  104.         return 10;
  105.     } 
  106.  
  107. }
  108.  
  109. // 测试开始
  110.  
  111. $objCart = new MyCart('myCart');
  112.  
  113. print_r($objCart);echo("\n");
  114.  
  115. $objCart->addItem('10001', 3);
  116. $objCart->addItem('10002');
  117. $objCart->addItem('10003');
  118. $objCart->addItem('10004');
  119. $objCart->editItem('10003', 5);
  120. $objCart->delItem('10004');
  121. //$objCart->emptyCart();
  122. print_r($_SESSION);echo("\n");
  123. echo($objCart->totalCartPrice()."\n");
  124. echo($objCart->totalCartNumber()."\n");

你可能感兴趣的:(购物车)