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 编写的日历
Oct 09 PHP
php+mysql分页代码详解
Mar 27 PHP
php微信支付之APP支付方法
Mar 04 PHP
php实现paypal 授权登录
May 28 PHP
Yii获取当前url和域名的方法
Jun 08 PHP
php远程下载类分享
Apr 13 PHP
PHP面向对象多态性实现方法简单示例
Sep 27 PHP
thinkphp5引入公共部分header、footer的方法详解
Sep 14 PHP
php语法检查的方法总结
Jan 21 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
Oct 10 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
Feb 27 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
Apr 05 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批量删除数据
2007/01/18 PHP
PHP 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
解析PHP中数组元素升序、降序以及重新排序的函数
2013/06/20 PHP
thinkPHP实现多字段模糊匹配查询的方法
2016/12/01 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
在textarea中屏蔽js的某个function的javascript代码
2007/04/20 Javascript
javascript 回调函数详解
2014/11/11 Javascript
javascript html实现网页版日历代码
2016/03/08 Javascript
通过AngularJS实现图片上传及缩略图展示示例
2017/01/03 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
2017/02/19 Javascript
JS中数组与对象的遍历方法实例小结
2018/08/14 Javascript
vue-cli3添加模式配置多环境变量的方法
2019/06/05 Javascript
vuex实现像调用模板方法一样调用Mutations方法
2019/11/06 Javascript
Vue是怎么渲染template内的标签内容的
2020/06/05 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
2020/12/14 Vue.js
详解微信小程序(Taro)手动埋点和自动埋点的实现
2021/03/02 Javascript
Python基于分析Ajax请求实现抓取今日头条街拍图集功能示例
2018/07/19 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
将keras的h5模型转换为tensorflow的pb模型操作
2020/05/25 Python
浅析python 字典嵌套
2020/09/29 Python
用 Django 开发一个 Python Web API的方法步骤
2020/12/03 Python
Python扫描端口的实现
2021/01/25 Python
css3 border-image使用说明
2010/06/23 HTML / CSS
中国最大隐形眼镜网上商城:视客眼镜网
2016/10/30 全球购物
阿联酋电子产品购物网站:Menakart
2017/09/15 全球购物
就业意向书
2014/07/29 职场文书
公司领导班子对照材料
2014/08/18 职场文书
工程承包协议书
2014/10/20 职场文书
九寨沟导游词
2015/02/02 职场文书
护士个人年终总结
2015/02/13 职场文书
2015年艾滋病宣传活动总结
2015/03/27 职场文书
公司表扬信格式
2015/05/04 职场文书
关于环保的宣传稿
2015/07/23 职场文书
写作指导:怎么书写竞聘演讲稿?
2019/07/04 职场文书
Java完整实现记事本代码
2022/06/16 Java/Android