免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1539 | 回复: 1
打印 上一主题 下一主题

将Session封装到一个购物车类! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-07-06 15:52 |只看该作者 |倒序浏览
/************************  
名称: 购物车类  
作者:kevin 2005.7.5  
描述:将session封装入一个简单的购物车类之中
每件商品要求具备id,name,price,count四个属性,  
如果要加新的属性,请修改相应部分。  
*************************/  

class ShopCart {  

var $SortCount; //商品种类数  
var $TotalCost; //商品总价值  
var $Id; //每类商品的ID(数组)  
var $Name; //每类商品的名称(数组)  
var $Price; //每类商品的价格(数组)  
var $Count; //每类商品的件数(数组)  
var $Cost; //每类商品的价值(数组)  


//******构造函数  
function ShopCart(){  
$this->;SortCount=0;  

session_start(); //初始化一个session  
session_register('sId');  
session_register('sName');  
session_register('sPrice');  
session_register('sCount');  

$this->;Update();  
$this->;Calculate();  

}  

//********私有,根据session的值更新类中相应数据  
function Update(){  
global $sId,$sName,$sPrice,$sCount;  

if(!isset($sId) or !isset($sName) or !isset($sPrice)) return;  

$this->;Id=$sId;  
$this->;Name=$sName;  
$this->rice=$sPrice;  
$this->;Count=$sCount;  

$this->;SortCount=count($sId);  

}  

//********私有,根据新的数据计算每类商品的价值及全部商品的总价  
function Calculate(){  
for($i=0;$i<$this->;SortCount;$i++){  
$this->;Cost[$i]=$this->rice[$i]*$this->;Count[$i];  
$this->;TotalCost += $this->;Cost[$i];  
}  
}  


//**************以下为接口函数  

//*** 加一件商品  
// 判断是否蓝中已有,如有,加count,否则加一个新商品  
//首先都是改session的值,然后再调用update() and calculate()来更新成员变量  
function AddOne($id,$na,$pr){  
global $sId,$sName,$sPrice,$sCount;  

$k=count($sId);  
for($i=0;$i<$k;$i++){ //先找一下是否已经加入了这种商品  
if($sId[$i]==$id){  
$sCount[$i]++;  
break;  
}  
}  
if($i>;=$k){ //没有则加一个新商品种类  
$sId[]=$id;  
$sName[]=$na;  
$sPrice[]=$pr;  
$sCount[]=1;  
}  

$this->;Update(); //更新一下类的成员数据  
$this->;Calculate();  
}  

//移去一件商品  
function RemoveOne($id){  
global $sId,$sName,$sPrice,$sCount;  

$k=count($sId);  
for($i=0;$i<$k;$i++){  
if($sId[$i]==$id){  
$sCount[$i]--;  
break;  
}  
}  

$this->;Update();  
$this->;Calculate();  
}  

//改变商品的个数  
function ModifyCount($i,$ncount){  
global $sCount;  

$sCount[$i]=$ncount;  

$this->;Update();  
$this->;Calculate();  

}  

//清空一种商品  
function EmptyOne($i){  
global $sCount;  

$sCount[$i]=0;  

$this->;Update();  
$this->;Calculate();  
}  


/***************************  
清空所有的商品  

因为在win里PHP不支持session_destroy()函数,所以这个清空函数不完善,  
只是把每种商品的个数置为0。  
如果是在linux下,可以直接用session_destroy()来做。  
*****************************/  
function EmptyAll(){  
global $sId,$sName,$sPrice,$sCount;  

$k=count($sId);  
for($i=0;$i<$k;$i++){  
$sCount[$i]=0;  
}  

$this->;Update();  
$this->;Calculate();  

session_unregister('sId');  
session_unregister('sName');  
session_unregister('sPrice');  
session_unregister('sCount');  

$this->;SortCount=0;  

}  

//是否某件商品已在蓝内,参数为此商品的ID  
function InCart($id){  
for($i=0;$i<$this->;SortCount;$i++){  
if($this->;Id[$i]==$id) return TRUE;  
}  
return FALSE;  
}  

//某件商品在蓝内的位置  
function IndexOf($id){  
for($i=0;$i<$this->;SortCount;$i++){  
if($this->;Id[$i]==$id) return $i;  
}  
return 0;  
}  

//取一件商品的信息,主要的工作函数  
//返回一个关联数组,下标分别对应 id,name,price,count,cost  
function GetOne($i){  
$Result[id]=$this->;Id[$i];  
$Result[name]=$this->;Name[$i];  
$Result[price]=$this->rice[$i];  
$Result[count]=$this->;Count[$i];  
$Result[cost]=$this->;Cost[$i];  

return $Result;  
}  

//取总的商品种类数  
function GetSortCount(){  
return $this->;SortCount;  
}  

//取总的商品价值  
function GetTotalCost(){  
return $this->;TotalCost;  
}  

//end class  
}  

?>;

论坛徽章:
0
2 [报告]
发表于 2005-07-06 20:10 |只看该作者

将Session封装到一个购物车类!

没有实际应用的意义
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP