PHP购物车类代码

在开发网络购物网站的时候,购物车类是购物网站的必备模块。总结一个php实现购物车类。实现了购物车中的商品的添加,修改,删除,列表,以及各种计算的相关功能。采用了php单一类的原理,安全高效,简单易扩展。

class Cart{

static protected $ins; //实例变量

protected $item=array(); //放商品容器

//禁止外部调用

final protected function __construct(){}

//禁止克隆

final protected function __clone(){}

//类内部实例化

static protected function Getins(){

if(!(self::$ins instanceof self)){self::$ins=new self();}return self::$ins;

}

//为了能使商品跨页面保存,把对象放入session里

public function Getcat(){

if(!isset($_SESSION['cat'])||!($_SESSION['cat'] instanceof self)){

$_SESSION['cat']=self::Getins();

}

return $_SESSION['cat'];

}

//入列时的检验,是否在$item里存在

public function Initem($goods_id){

if($this->Gettype()==0){

return false;

}

//这里检验商品是否相同是通过goods_id来检测,并未通过商品名称name来检测,具体情况可做修改

if(!(array_key_exists($goods_id,$this->item))){

return false;

}else{

return $this->item[$goods_id]['num']; //返回此商品个数

}

}

//添加一个商品

public function Additem($goods_id,$name,$num,$price){

if($this->Initem($goods_id)!=false){

$this->item[$goods_id]['num']+=$num;

return;

}

$this->item[$goods_id]=array(); //一个商品为一个数组

$this->item[$goods_id]['num']=$num; //这一个商品的购买数量

$this->item[$goods_id]['name']=$name; //商品名字

$this->item[$goods_id]['price']=$price; //商品单价

}

//减少一个商品

public function Reduceitem($goods_id,$num){

if($this->Initem($goods_id)==false){

return;

}

if($num>$this->Getunm($goods_id)){

unset($this->item[$goods_id]);

}else{

$this->item[$goods_id]['num']-=$num;

}

}

//去掉一个商品

public function Delitem($goods_id){

if($this->Initem($goods_id)){

unset($this->item[$goods_id]);

}

}

//返回购买商品列表

public function Itemlist(){

return $this->item;

}

//一共有多少种商品

public function Gettype(){

return count($this->item);

}

//获得一种商品的总个数

public function Getunm($goods_id){

return $this->item[$goods_id]['num'];

}

// 查询购物车中有多少个商品

public function Getnumber(){

$num=0;

if($this->Gettype()==0){

return 0;

}

foreach($this->item as $k=>$v){

$num+=$v['num'];

}

return $num;

}

//计算总价格

public function Getprice(){

$price=0;

if($this->Gettype()==0){

return 0;

}

foreach($this->item as $k=>$v){

$price+=$v['num']*$v['num'];

}

return $price;

}

//清空购物车

public function Emptyitem(){

$this->item=array();

}

}

以上购物车类的调用示例如下:

php购物车完整类代码,PHP购物车类代码相关推荐

  1. javascript购物车详解实现购物车完整功能(附效果图,完整代码)

    前言: 我们肯定都很熟悉商品购物车这一功能,每当我们在某宝某东上购买商品的时候,看中了哪件商品,就会加入购物车中,最后结算.购物车这一功能,方便消费者对商品进行管理,可以添加商品,删除商品,选中购物车 ...

  2. 购物车及商品php代码_php购物车代码_php网上商城购物车代码一例

    摘要 腾兴网为您分享:php网上商城购物车代码一例,有信,英语字典,携程,网赚招聘等软件知识,以及迅雷vip补丁,全能素描,苏酒门户,inshort视频剪辑,北京地铁高清大图,监控上网,云播搜,维融打 ...

  3. 如何从900万张图片中对600类照片进行分类,附代码

    作者 | Aleksey Bilogur 译者 | 风车云马 责编 | Jane 出品 | AI科技大本营(公众号id:rgznai100) [导语]完成一个简单的端到端的机器学习模型需要几步?在本文 ...

  4. python中的object是什么意思_Python object类中的特殊方法代码讲解

    python版本:3.8class object: """ The most base type """ # del obj.xxx或del ...

  5. 如何在xaml文件中操作用户在后台代码定义的类(1)

    本文主要示例如何在xaml文件中操作用户使用C#代码自定义的类.主要步骤如下: 1.在VS2008中创建一个新项目CustomTypesInXaml,在此项目下我们新建两个类,一个是Client类,一 ...

  6. MFC基于TCP协议的CSocket类套接字服务器端代码示范

    MFC基于TCP协议的CSocket类套接字服务器端代码示范 https://blog.csdn.net/txwtech/article/details/93417667 转载于:https://ww ...

  7. 如果有一个类是 myClass , 关于下面代码正确描述的是?

    如果有一个类是 myClass , 关于下面代码正确描述的是: myClass::~myClass(){ delete this; this = NULL; } 答案:无法编译通过 解析: 1.在类A ...

  8. JS类的封装及实现代码

    js并不是一种面向对向的语言, 没有提供对类的支持, 因此我们不能像在传统的语言里那样 用class来定义类, 但我们可以利用js的闭包封装机制来实现js类, 我们来封装一个简的Shape类. 1. ...

  9. 类的加载顺序和静态代码块和匿名代码块的区别

    静态代码块和匿名代码块的区别 静态块: static { } 匿名块: { }          静态块只在类第一次被加载的时候执行一次,一般用于进行初始化工作;         匿名块在每一次创建本 ...

  10. # 自定义异常类 问题: 请使用代码实现 每一个学生(Student)都有学号,姓名和分数,分数永远不能为负数 如果老师给学生赋值一个负数,抛出一个自定异常

    自定义异常类 问题: 请使用代码实现 每一个学生(Student)都有学号,姓名和分数,分数永远不能为负数 如果老师给学生赋值一个负数,抛出一个自定异常 public class NoScoreExc ...

最新文章

  1. Bootstrap笔记(记录不会的知识)
  2. 智能车竞赛技术报告 | 智能车视觉 - 扬州大学 - 这辆盲车不吃水果
  3. 生成android_Android开发:生成桌面快捷方式是这样做的
  4. python装饰器编程_Python编程中装饰器的使用示例解析
  5. React实践(一)——webpack4搭建开发环境
  6. matlab中给图像加几个矩形框_没想到!PPT中的这个效果,用好了,简直就是渣图美化器...
  7. ubuntu各大学更新源(教育网速度都很快)
  8. 【路径规划】基于matlab粒子群和遗传算法求解机器人栅格地图避障路径规划问题【含Matlab源码 202期】
  9. MATLAB学习笔记——数组
  10. 解决QQ或TIM下载群文件网路失败或者网速贼慢的办法
  11. 从Soul APP 看社交升级新玩法
  12. 电源管理芯片TMI6201A,助力电池供电系统超长续航更有价值!
  13. EasyCVR如何实现视频监控的大屏播放?
  14. NLP初学-简易聊天机器人
  15. 起点:如何成为一名黑客?
  16. MongoDB——ISODate日期类型
  17. PHP抓取某页面指定内容
  18. 怎么用计算机编写文件,怎样在电脑上写作文做文件
  19. 王者荣耀头像大小怎么调?调整图片尺寸大小工具分享
  20. 单波段彩色变换(伪彩色密度分割)

热门文章

  1. cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit O
  2. web前端笔记2js部分
  3. 显示ip地址html代码,37行代码实现爬取ip地址并显示到GUI上
  4. OC 基础 UICollectionView
  5. flir相机、livox和xsense驱动安装与测试笔记
  6. 高级Lyapunov稳定性
  7. 欧拉角与旋转矩阵转换 matlab 函数 angle2dcm dcm2angle 方向余弦矩阵 机器人坐标变换
  8. 一起DIY四轴飞行器(二)初识飞控大脑
  9. 用C#开发JAI相机的过程和问题用C#开发JAI相机的过程和问题
  10. Python 模块之 Difflib(文本对比,原创source)