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 相关文章推荐
多数据表共用一个页的新闻发布
Oct 09 PHP
我的群发邮件程序
Oct 09 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
Jun 06 PHP
ThinkPHP3.1新特性之字段合法性检测详解
Jun 19 PHP
PHP里8个鲜为人知的安全函数分析
Dec 09 PHP
PHP中$this和$that指针使用实例
Jan 06 PHP
PHP模拟asp.net的StringBuilder类实现方法
Aug 08 PHP
3种方法轻松处理php开发中emoji表情的问题
Jul 18 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
May 02 PHP
PHP实现通过CURL上传文件功能示例
May 30 PHP
laravel 自定义常量的两种方案
Oct 14 PHP
gearman中任务的优先级和返回状态实例分析
Feb 27 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
在PHP3中实现SESSION的功能(一)
2006/10/09 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
2013/01/23 PHP
网页禁用右键实现代码(JavaScript代码)
2009/10/29 Javascript
兼容IE和FF的js脚本代码小结(比较常用)
2010/12/06 Javascript
jquery插件开发注意事项小结
2013/06/04 Javascript
node.js中使用node-schedule实现定时任务实例
2014/06/03 Javascript
extjs 如何给column 加上提示
2014/07/29 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
BootStrap glyphicons 字体图标实现方法
2016/05/01 Javascript
Javascript 实现全屏滚动实例代码
2016/12/31 Javascript
Vue中正确使用jQuery的方法
2017/10/30 jQuery
JS获取url参数,JS发送json格式的POST请求方法
2018/03/29 Javascript
JavaScript模拟实现自由落体效果
2018/08/28 Javascript
微信 jssdk 签名错误invalid signature的解决方法
2019/01/14 Javascript
Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现
2019/04/01 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
vue前后分离调起微信支付
2019/07/29 Javascript
Vue 实现从文件中获取文本信息的方法详解
2019/10/16 Javascript
python调用java的Webservice示例
2014/03/10 Python
用Python编写一个国际象棋AI程序
2014/11/28 Python
python对象及面向对象技术详解
2016/07/19 Python
Python操作json的方法实例分析
2018/12/06 Python
python中with用法讲解
2020/02/07 Python
在spyder IPython console中,运行代码加入参数的实例
2020/04/20 Python
美国迪克体育用品商店:DICK’S Sporting Goods
2018/07/24 全球购物
泰国在线书店:SE-ED
2020/06/21 全球购物
人力资源管理专业毕业生自我评价
2013/09/21 职场文书
初二物理教学反思
2014/01/29 职场文书
美德少年事迹材料1000字
2014/08/21 职场文书
个人批评与自我批评发言稿
2014/09/28 职场文书
普通党员个人整改措施
2014/10/27 职场文书
史上最牛的辞职信
2015/02/28 职场文书
暑期社会实践个人总结
2015/03/06 职场文书
vue响应式原理与双向数据的深入解析
2021/06/04 Vue.js
python数据处理之Pandas类型转换
2022/04/28 Python
MySQL 原理与优化之原数据锁的应用
2022/08/14 MySQL