首页 > 语言 > PHP > 正文

一个比较完善的购物车类

2024-09-04 11:43:59
字体:
来源:转载
供稿:网友

前不久做到一个项目需要用到购物车,考虑到可能经常用到,所以把它封装成一个类,以便以后调用,你可以简单的把这个类稍微修改一下就可以用在自己的程序里了.

  1. <?php 
  2. /*****************************************************************************/ 
  3. /*                                                                           */ 
  4. /* file type:      包含文件,建议后缀为.inc                                  */ 
  5. /*                                                                           */ 
  6. /* file name:      cart.inc                                                  */ 
  7. /*                                                                           */ 
  8. /* Description:    定义一个购车类                                            */ 
  9. /*                                                                           */ 
  10. /* Func list :     class cart                                                */ 
  11. /*                                                                           */ 
  12. /* author :        bigeagle                                                  */ 
  13. /*                                                                           */ 
  14. /* date :          2000/12/24                                                */ 
  15. /*                                                                           */ 
  16. /* History:        2000/12/24  finished                                      */ 
  17. /*                                                                           */ 
  18. /*****************************************************************************/ 
  19.  
  20. //定义本文件常量 
  21. define("_CART_INC_" , "exists") ; 
  22.  
  23. /*购物车类*/ 
  24. class TCart 
  25.  
  26.   var $SortCount;            //商品种类数 
  27.   var $TotalCost;            //商品总价值 
  28.  
  29.   var $Id;                   //每类商品的ID(数组) 
  30.   var $Name;                 //每类商品的名称(数组) 
  31.   var $Price;                //每类商品的价格(数组) 
  32.   var $Discount;             //商品的折扣(数组) 
  33.   var $GoodPrice ;           //商品的优惠价格(数组) 
  34.   var $Count;                //每类商品的件数(数组) 
  35.   var $MaxCount ;            //商品限量(数组) 
  36.  
  37.   //******构造函数 
  38.   function TCart() 
  39.   { 
  40.    $this->SortCount=0; 
  41.  
  42.    session_start(); //初始化一个session 
  43.    session_register('sId'); 
  44.    session_register('sName'); 
  45.    session_register('sPrice'); 
  46.    session_register('sDiscount'); 
  47.    session_register('sGoodPrice') ; 
  48.    session_register('sCount') ; 
  49.    session_register('sMaxCount') ; 
  50.  
  51.    $this->Update(); 
  52.    $this->Calculate(); 
  53.   } 
  54.  
  55.   //********私有,根据session的值更新类中相应数据 
  56.   function Update() 
  57.   { 
  58.     global $sId,$sName,$sPrice,$sCount,$sDiscount,$sMaxCount,$sGoodPrice
  59.  
  60.    if(!isset($sIdor !isset($sNameor !isset($sPrice
  61.       or !isset($sDiscountor !isset($sMaxCount
  62.       or !isset($sGoodPriceor !isset($sCount)) return
  63.  
  64.    $this->Id        =$sId
  65.    $this->Name      =$sName
  66.    $this->Price     =$sPrice
  67.    $this->Count     =$sCount
  68.    $this->Discount  = $sDiscount ; 
  69.    $this->GoodPrice = $sGoodPrice ; 
  70.    $this->MaxCount  = $sMaxCount ; 
  71.  
  72.    //计算商品总数 
  73.    $this->SortCount=count($sId); 
  74.  
  75.   } 
  76.  
  77.   //********私有,根据新的数据计算每类商品的价值及全部商品的总价 
  78.   function Calculate() 
  79.   { 
  80.    for($i=0;$i<$this->SortCount;$i++) 
  81.    { 
  82.      /*计算每件商品的价值,如果折扣是0 ,则为优惠价格*/ 
  83.      $GiftPrice = ($this->Discount[$i] == 0 ? $this->GoodPrice : 
  84.                    ceil($this->Price[$i] * $this->Discount[$i])/100 ); 
  85.      $this->TotalCost += $GiftPrice * $this->Count[$i] ; 
  86.    } 
  87.   } 
  88.  
  89.  
  90.   //**************以下为接口函数 
  91.  
  92.   //*** 加一件商品 
  93.   // 判断是否蓝中已有,如有,加count,否则加一个新商品 
  94.   //首先都是改session的值,然后再调用update() and calculate()来更新成员变量 
  95.   function Add($a_ID , $a_Name , $a_Price , $a_Discount , 
  96.                $a_GoodPrice , $a_MaxCount , $a_Count
  97.   { 
  98.    global $sId , $sName , $sCount , $sPrice , $sDiscount , 
  99.           $sGoodPrice , $sMaxCount ; 
  100.  
  101.    $k=count($sId); 
  102.    for ($i=0; $i<$k$i++) 
  103.    { //先找一下是否已经加入了这种商品 
  104.      if($sId[$i]==$a_ID
  105.      { 
  106.       $sCount[$i] += $a_Count ; 
  107.       break
  108.      } 
  109.    } 
  110.    if($i >= $k
  111.    { //没有则加一个新商品种类 
  112.     $sId[]        = $a_ID
  113.     $sName[]      = $a_Name
  114.     $sPrice[]     = $a_Price
  115.     $sCount[]     = $a_Count
  116.     $sGoodPrice[] = $a_GoodPrice ; 
  117.     $sDiscount[]  = $a_Discount ; 
  118.     $sMaxCount[]  = $a_MaxCount ; 
  119.    } 
  120.  
  121.    $this->Update(); //更新一下类的成员数据 
  122.    $this->Calculate(); 
  123.   } 
  124.  
  125.   //移去一件商品 
  126.   function Remove($a_ID
  127.   { 
  128.    global $sId , $sName , $sCount , $sPrice , $sDiscount , 
  129.           $sGoodPrice , $sMaxCount ; 
  130.  
  131.    $k = count($sId); 
  132.    for($i=0; $i < $k$i++) 
  133.    { 
  134.      if($sId[$i] == $a_ID
  135.      { 
  136.        $sCount[$i] = 0 ; 
  137.        break
  138.      } 
  139.    } 
  140.  
  141.    $this->Update(); 
  142.    $this->Calculate(); 
  143.   } 
  144.  
  145.   //改变商品的个数 
  146.   function ModifyCount($a_i,$a_Count
  147.   { 
  148.    global $sCount
  149.  
  150.    $sCount[$a_i] = $a_Count ; 
  151.    $this->Update(); 
  152.    $this->Calculate(); 
  153.   } 
  154.  
  155.  
  156.   /*************************** 
  157.   清空所有的商品 
  158.   *****************************/ 
  159.   function RemoveAll() 
  160.   { 
  161.    session_unregister('sId'); 
  162.    session_unregister('sName'); 
  163.    session_unregister('sPrice'); 
  164.    session_unregister('sDiscount'); 
  165.    session_unregister('sGoodPrice') ; 
  166.    session_unregister('sCount') ; 
  167.    session_unregister('sMaxCount') ; 
  168.    $this->SortCount = 0 ; 
  169.    $this->TotalCost = 0 ; 
  170.   } 
  171.  
  172.  
  173.   //是否某件商品已在蓝内,参数为此商品的ID 
  174.   function Exists($a_ID
  175.   { 
  176.    for($i=0; $i<$this->SortCount; $i++) 
  177.    { 
  178.      if($this->Id[$i]==$a_IDreturn TRUE; 
  179.    } 
  180.    return FALSE; 
  181.   } 
  182.  
  183.   //某件商品在蓝内的位置 
  184.   function IndexOf($a_ID
  185.   { 
  186.    for($i=0; $i<$this->SortCount; $i++) 
  187.    { 
  188.     if($this->Id[$i]==$idreturn $i
  189.    } 
  190.    return 0; 
  191.   } 
  192.  
  193.   //取一件商品的信息,主要的工作函数 
  194.   //返回一个关联数组, 
  195.   function Item($i
  196.   { 
  197.    $Result[id]        = $this->Id[$i]; 
  198.    $Result[name]      = $this->Name[$i]; 
  199.    $Result[price]     = $this->Price[$i]; 
  200.    $Result[count]     = $this->Count[$i]; 
  201.    $Result[discount]  = $this->Discount[$i] ; 
  202.    $Result[goodprice] = $this->GoodPrice[$i] ; 
  203.    $Result[maxcount]  = $this->MaxCount[i] ; 
  204.    return $Result
  205.   } 
  206.  
  207.   //取总的商品种类数 
  208.   function CartCount() 
  209.   { 
  210.    return $this->SortCount; 
  211.   } 
  212.  
  213.   //取总的商品价值 
  214.   function GetTotalCost() 
  215.   { 
  216.    return $this->TotalCost; 
  217.   } 
  218. }  
  219. ?> 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表