设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP实例一个比较完善的购物车类

发布时间:2022-07-07 13:14 所属栏目:121 来源:互联网
导读:
导读:前不久做到一个项目需要用到购物车,考虑到可能经常用到,所以把它封装成一个类,以便以后调用。你可以简单的把这个类稍微修改一下就可以用在自己的程序里了,具体使用请见。 /***************************************************************************
  前不久做到一个项目需要用到购物车,考虑到可能经常用到,所以把它封装成一个类,以便以后调用。你可以简单的把这个类稍微修改一下就可以用在自己的程序里了,具体使用请见。
 
  /*****************************************************************************/
  /* */
  /* 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;
  }
  }.

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读