zoukankan      html  css  js  c++  java
  • 一个比较完善的购物车类

    一个比较完善的购物车类

    发布:smiling 来源:  添加日期:2013-12-08 19:06:58 浏览:143 评论:0 

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

    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($sId) or !isset($sName) or !isset($sPrice) 
    61.       or !isset($sDiscount) or !isset($sMaxCount) 
    62.       or !isset($sGoodPrice) or !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_ID) return 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]==$id) return $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. ?> 
     
     

    Tags: PHP购物车

  • 相关阅读:
    浏览器HTML5支持程度测试
    Unit testing Cmockery 简单使用
    Linux likely unlikely
    Android development tools line_endings hacking
    Linux C enum
    Android 系统内置App JNI
    Android Broadcast Receiver
    Android获取SharedPreferences失败,且App无法启动
    Sublime-text markdown with Vim mode and auto preview
    遍历Map key-value的两种方法
  • 原文地址:https://www.cnblogs.com/u0mo5/p/4519562.html
Copyright © 2011-2022 走看看