php购物车完整类代码,PHP购物车类代码
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购物车类代码相关推荐
- javascript购物车详解实现购物车完整功能(附效果图,完整代码)
前言: 我们肯定都很熟悉商品购物车这一功能,每当我们在某宝某东上购买商品的时候,看中了哪件商品,就会加入购物车中,最后结算.购物车这一功能,方便消费者对商品进行管理,可以添加商品,删除商品,选中购物车 ...
- 购物车及商品php代码_php购物车代码_php网上商城购物车代码一例
摘要 腾兴网为您分享:php网上商城购物车代码一例,有信,英语字典,携程,网赚招聘等软件知识,以及迅雷vip补丁,全能素描,苏酒门户,inshort视频剪辑,北京地铁高清大图,监控上网,云播搜,维融打 ...
- 如何从900万张图片中对600类照片进行分类,附代码
作者 | Aleksey Bilogur 译者 | 风车云马 责编 | Jane 出品 | AI科技大本营(公众号id:rgznai100) [导语]完成一个简单的端到端的机器学习模型需要几步?在本文 ...
- python中的object是什么意思_Python object类中的特殊方法代码讲解
python版本:3.8class object: """ The most base type """ # del obj.xxx或del ...
- 如何在xaml文件中操作用户在后台代码定义的类(1)
本文主要示例如何在xaml文件中操作用户使用C#代码自定义的类.主要步骤如下: 1.在VS2008中创建一个新项目CustomTypesInXaml,在此项目下我们新建两个类,一个是Client类,一 ...
- MFC基于TCP协议的CSocket类套接字服务器端代码示范
MFC基于TCP协议的CSocket类套接字服务器端代码示范 https://blog.csdn.net/txwtech/article/details/93417667 转载于:https://ww ...
- 如果有一个类是 myClass , 关于下面代码正确描述的是?
如果有一个类是 myClass , 关于下面代码正确描述的是: myClass::~myClass(){ delete this; this = NULL; } 答案:无法编译通过 解析: 1.在类A ...
- JS类的封装及实现代码
js并不是一种面向对向的语言, 没有提供对类的支持, 因此我们不能像在传统的语言里那样 用class来定义类, 但我们可以利用js的闭包封装机制来实现js类, 我们来封装一个简的Shape类. 1. ...
- 类的加载顺序和静态代码块和匿名代码块的区别
静态代码块和匿名代码块的区别 静态块: static { } 匿名块: { } 静态块只在类第一次被加载的时候执行一次,一般用于进行初始化工作; 匿名块在每一次创建本 ...
- # 自定义异常类 问题: 请使用代码实现 每一个学生(Student)都有学号,姓名和分数,分数永远不能为负数 如果老师给学生赋值一个负数,抛出一个自定异常
自定义异常类 问题: 请使用代码实现 每一个学生(Student)都有学号,姓名和分数,分数永远不能为负数 如果老师给学生赋值一个负数,抛出一个自定异常 public class NoScoreExc ...
最新文章
- Bootstrap笔记(记录不会的知识)
- 智能车竞赛技术报告 | 智能车视觉 - 扬州大学 - 这辆盲车不吃水果
- 生成android_Android开发:生成桌面快捷方式是这样做的
- python装饰器编程_Python编程中装饰器的使用示例解析
- React实践(一)——webpack4搭建开发环境
- matlab中给图像加几个矩形框_没想到!PPT中的这个效果,用好了,简直就是渣图美化器...
- ubuntu各大学更新源(教育网速度都很快)
- 【路径规划】基于matlab粒子群和遗传算法求解机器人栅格地图避障路径规划问题【含Matlab源码 202期】
- MATLAB学习笔记——数组
- 解决QQ或TIM下载群文件网路失败或者网速贼慢的办法
- 从Soul APP 看社交升级新玩法
- 电源管理芯片TMI6201A,助力电池供电系统超长续航更有价值!
- EasyCVR如何实现视频监控的大屏播放?
- NLP初学-简易聊天机器人
- 起点:如何成为一名黑客?
- MongoDB——ISODate日期类型
- PHP抓取某页面指定内容
- 怎么用计算机编写文件,怎样在电脑上写作文做文件
- 王者荣耀头像大小怎么调?调整图片尺寸大小工具分享
- 单波段彩色变换(伪彩色密度分割)
热门文章
- cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit O
- web前端笔记2js部分
- 显示ip地址html代码,37行代码实现爬取ip地址并显示到GUI上
- OC 基础 UICollectionView
- flir相机、livox和xsense驱动安装与测试笔记
- 高级Lyapunov稳定性
- 欧拉角与旋转矩阵转换 matlab 函数 angle2dcm dcm2angle 方向余弦矩阵 机器人坐标变换
- 一起DIY四轴飞行器(二)初识飞控大脑
- 用C#开发JAI相机的过程和问题用C#开发JAI相机的过程和问题
- Python 模块之 Difflib(文本对比,原创source)