PHP实现的比较完善的购物车类


Posted in PHP onDecember 02, 2014

本文实例讲述了PHP实现的比较完善的购物车类。分享给大家供大家参考。具体实现方法如下:

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

<?php 

/*****************************************************************************/ 

/*                                                                           */ 

/* file type:      包含文件,建议后缀为.inc                                  */ 

/*                                                                           */ 

/* file name:      cart.inc                                                  */ 

/*                                                                           */ 

/* Description:    定义一个购车类                                            */ 

/*                                                                           */ 

/* Func list :     class cart                                                */ 

/*                                                                           */ 

/* author :        bigeagle                                                  */ 

/*                                                                           */ 

/*                                                                           */ 

/*****************************************************************************/ 

 

//定义本文件常量 

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程序设计有所帮助。

PHP 相关文章推荐
关于PHP中操作MySQL数据库的一些要注意的问题
Oct 09 PHP
用Flash图形化数据(一)
Oct 09 PHP
php中对xml读取的相关函数的介绍一
Jun 05 PHP
PHP 网页过期时间的控制代码
Jun 29 PHP
PHP项目开发中最常用的自定义函数整理
Dec 02 PHP
php设计模式 Strategy(策略模式)
Jun 26 PHP
PHP中使用sleep函数实现定时任务实例分享
Aug 21 PHP
PHP上传文件时自动分配路径的方法
Jan 09 PHP
php实现二进制和文本相互转换的方法
Apr 18 PHP
PHP 验证身份证是否合法的函数
Feb 09 PHP
浅谈PHP中类和对象的相关函数
Apr 26 PHP
Bootstrap+PHP实现多图上传功能实例详解
Apr 08 PHP
Yii框架关联查询with用法分析
Dec 02 #PHP
phpstorm配置Xdebug进行调试PHP教程
Dec 01 #PHP
页面利用渐进式JPEG来提升用户体验度
Dec 01 #PHP
php页面函数设置超时限制的方法
Dec 01 #PHP
PHP实现抓取HTTPS内容
Dec 01 #PHP
php设置静态内容缓存时间的方法
Dec 01 #PHP
thinkphp实现发送邮件密码找回功能实例
Dec 01 #PHP
You might like
php中文字符截取防乱码
2008/03/28 PHP
yii框架搜索分页modle写法
2016/12/19 PHP
jquery uaMatch源代码
2011/02/14 Javascript
jQuery实现切换页面布局使用介绍
2011/10/09 Javascript
JavaScript根据数据生成百分比图和柱状图的实例代码
2013/07/14 Javascript
使用js实现雪花飘落效果
2013/08/26 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
通过JS获取Request.QueryString()参数的值实现方法
2016/09/27 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
2016/11/25 Javascript
浅析Ajax语法
2016/12/05 Javascript
详解React Native顶|底部导航使用小技巧
2017/09/14 Javascript
React-Native使用Mobx实现购物车功能
2017/09/14 Javascript
vuex中使用对象展开运算符的示例
2017/09/25 Javascript
打造通用的匀速运动框架(实例讲解)
2017/10/17 Javascript
小程序hover-class点击态效果实现
2019/02/26 Javascript
基于JS实现操作成功之后自动跳转页面
2020/09/25 Javascript
详解Vue.js 可拖放文本框组件的使用
2021/03/03 Vue.js
[14:19]2018年度COSER大赛-完美盛典
2018/12/16 DOTA
Python使用cx_Oracle调用Oracle存储过程的方法示例
2017/10/07 Python
详解Python3的TFTP文件传输
2018/06/26 Python
Python面向对象程序设计示例小结
2019/01/30 Python
10个Python面试常问的问题(小结)
2019/11/20 Python
python使用OpenCV模块实现图像的融合示例代码
2020/04/10 Python
python 中 .py文件 转 .pyd文件的操作
2021/03/04 Python
Oral-B荷兰:牙医最推荐的品牌
2020/02/25 全球购物
万豪国际住宅与别墅集团:Homes & Villas by Marriott International
2020/10/08 全球购物
输入N,打印N*N矩阵
2012/02/20 面试题
学生个人求职自荐信格式
2013/09/23 职场文书
大学三年的自我评价
2013/12/25 职场文书
安全生产先进个人材料
2014/02/06 职场文书
《泉水》教学反思
2014/04/11 职场文书
小学班级特色活动方案
2014/08/31 职场文书
甜品店创业计划书
2014/09/21 职场文书
2015年公务员转正工作总结
2015/04/24 职场文书
小学思品教学反思
2016/02/20 职场文书
公司员工违法违章行为检讨书
2019/06/24 职场文书