PHP实现的比较完善的购物车类
发布时间:2020-12-13 02:14:15 所属栏目:PHP教程 来源:网络整理
导读:《:PHP实现的比较完善的购物车类》要点: 本文介绍了:PHP实现的比较完善的购物车类,希望对您有用。如果有疑问,可以联系我们。 本篇章节讲解PHP实现的比较完善的购物车类.供大家参考研究.具体实现办法如下: PHP实战 前不久做到一个项目需要用到
《:PHP实现的比较完善的购物车类》要点: 本篇章节讲解PHP实现的比较完善的购物车类.分享给大家供大家参考.具体实现办法如下: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, ????????? $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,$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实现的比较完善的购物车类》是否对您有启发,欢迎查看更多与《:PHP实现的比较完善的购物车类》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |