好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

一个比较完善的购物车类 - php类库

一个比较完善的购物车类

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

<?php  /*****************************************************************************/   /*                                                                           */   /* file type:      包含文件,建议后缀为.inc                                  */   /*                                                                           */   /* file name:      cart.inc                                                  */   /*                                                                           */   /* Description:    定义一个购车类                                            */   /*                                                                           */   /* Func list :     class cart                                                */   /*                                                                           */   /* author :        bigeagle                                                  */   /*                                                                           */   /* date :          2000/12/24                                                */   /*                                                                           */   /* History:        2000/12/24  finished                                      */   /*                                                                           */   /*****************************************************************************/     //定义本文件常量   define( "_CART_INC_"  ,  "exists" ) ;    /*购物车类*/   class  TCart  {       var   $SortCount ;             //商品种类数      var   $TotalCost ;             //商品总价值        var   $Id ;                    //每类商品的ID(数组)      var   $Name ;                  //每类商品的名称(数组)      var   $Price ;                 //每类商品的价格(数组)      var   $Discount ;              //商品的折扣(数组)      var   $GoodPrice  ;            //商品的优惠价格(数组)      var   $Count ;                 //每类商品的件数(数组)      var   $MaxCount  ;             //商品限量(数组)        //******构造函数      function  TCart()    {      $this ->SortCount=0;       session_start();  //初始化一个session      session_register( 'sId' );     session_register( 'sName' );     session_register( 'sPrice' );     session_register( 'sDiscount' );     session_register( 'sGoodPrice' ) ;     session_register( 'sCount' ) ;     session_register( 'sMaxCount' ) ;        $this ->Update();      $this ->Calculate();    }       //********私有,根据session的值更新类中相应数据      function  Update()    {       global   $sId , $sName , $sPrice , $sCount , $sDiscount , $sMaxCount , $sGoodPrice ;        if (!isset( $sId )  or  !isset( $sName )  or  !isset( $sPrice )         or  !isset( $sDiscount )  or  !isset( $sMaxCount )         or  !isset( $sGoodPrice )  or  !isset( $sCount ))  return ;        $this ->Id        = $sId ;      $this ->Name      = $sName ;      $this ->Price     = $sPrice ;      $this -> Count      = $sCount ;      $this ->Discount  =  $sDiscount  ;      $this ->GoodPrice =  $sGoodPrice  ;      $this ->MaxCount  =  $sMaxCount  ;        //计算商品总数       $this ->SortCount= count ( $sId );      }       //********私有,根据新的数据计算每类商品的价值及全部商品的总价      function  Calculate()    {      for ( $i =0; $i < $this ->SortCount; $i ++)     {       /*计算每件商品的价值,如果折扣是0 ,则为优惠价格*/        $GiftPrice  = ( $this ->Discount[ $i ] == 0 ?  $this ->GoodPrice :                      ceil ( $this ->Price[ $i ] *  $this ->Discount[ $i ])/100 );        $this ->TotalCost +=  $GiftPrice  *  $this -> Count [ $i ] ;     }    }         //**************以下为接口函数        //*** 加一件商品      // 判断是否蓝中已有,如有,加count,否则加一个新商品      //首先都是改session的值,然后再调用update() and calculate()来更新成员变量      function  Add( $a_ID  ,  $a_Name  ,  $a_Price  ,  $a_Discount  ,                  $a_GoodPrice  ,  $a_MaxCount  ,  $a_Count )    {      global   $sId  ,  $sName  ,  $sCount  ,  $sPrice  ,  $sDiscount  ,             $sGoodPrice  ,  $sMaxCount  ;        $k = count ( $sId );      for  ( $i =0;  $i < $k ;  $i ++)     {  //先找一下是否已经加入了这种商品         if ( $sId [ $i ]== $a_ID )       {         $sCount [ $i ] +=  $a_Count  ;         break ;       }     }      if ( $i  >=  $k )     {  //没有则加一个新商品种类        $sId []        =  $a_ID ;       $sName []      =  $a_Name ;       $sPrice []     =  $a_Price ;       $sCount []     =  $a_Count ;       $sGoodPrice [] =  $a_GoodPrice  ;       $sDiscount []  =  $a_Discount  ;       $sMaxCount []  =  $a_MaxCount  ;     }        $this ->Update();  //更新一下类的成员数据       $this ->Calculate();    }       //移去一件商品      function  Remove( $a_ID )    {      global   $sId  ,  $sName  ,  $sCount  ,  $sPrice  ,  $sDiscount  ,             $sGoodPrice  ,  $sMaxCount  ;        $k  =  count ( $sId );      for ( $i =0;  $i  <  $k ;  $i ++)     {        if ( $sId [ $i ] ==  $a_ID )       {          $sCount [ $i ] = 0 ;          break ;       }     }        $this ->Update();      $this ->Calculate();    }       //改变商品的个数      function  ModifyCount( $a_i , $a_Count )    {      global   $sCount ;        $sCount [ $a_i ] =  $a_Count  ;      $this ->Update();      $this ->Calculate();    }        /***************************    清空所有的商品    *****************************/     function  RemoveAll()    {     session_unregister( 'sId' );     session_unregister( 'sName' );     session_unregister( 'sPrice' );     session_unregister( 'sDiscount' );     session_unregister( 'sGoodPrice' ) ;     session_unregister( 'sCount' ) ;     session_unregister( 'sMaxCount' ) ;      $this ->SortCount = 0 ;      $this ->TotalCost = 0 ;    }         //是否某件商品已在蓝内,参数为此商品的ID      function  Exists( $a_ID )    {      for ( $i =0;  $i < $this ->SortCount;  $i ++)     {        if ( $this ->Id[ $i ]== $a_ID )  return  TRUE;     }      return  FALSE;    }       //某件商品在蓝内的位置      function  IndexOf( $a_ID )    {      for ( $i =0;  $i < $this ->SortCount;  $i ++)     {       if ( $this ->Id[ $i ]== $id )  return   $i ;     }      return  0;    }       //取一件商品的信息,主要的工作函数      //返回一个关联数组,      function  Item( $i )    {      $Result [id]        =  $this ->Id[ $i ];      $Result [name]      =  $this ->Name[ $i ];      $Result [price]     =  $this ->Price[ $i ];      $Result [ count ]     =  $this -> Count [ $i ];      $Result [discount]  =  $this ->Discount[ $i ] ;      $Result [goodprice] =  $this ->GoodPrice[ $i ] ;      $Result [maxcount]  =  $this ->MaxCount[i] ;      return   $Result ;    }       //取总的商品种类数      function  CartCount()    {      return   $this ->SortCount;    }       //取总的商品价值      function  GetTotalCost()    {      return   $this ->TotalCost;    }  }   ?> 

查看更多关于一个比较完善的购物车类 - php类库的详细内容...

  阅读:41次