php购物车Cart类 - vip共享吧
  • 网站首页
  • IT技术笔记
    • Java教程
    • MySql数据库
    • PHP开发
    • Python教程
    • JavaScript
    • SEO优化
    • 常用工具
  • 好资源福利
    • 会员账号共享
  • 网站模板源码
    • 小程序源码
    • 网站源码
  • 共享网络资源
  • 更多功能
    • 留言吐槽
    • 文章归档
    • 我的邻居
    • 史上今日
    • 视频解析
    • 高清壁纸
    • 公告动态
    • 广告合作
    • 关于我们


导航菜单
  • 网站首页
  • IT技术笔记
    • Java教程
    • MySql数据库
    • PHP开发
    • Python教程
    • JavaScript
    • SEO优化
    • 常用工具
  • 好资源福利
    • 会员账号共享
  • 网站模板源码
    • 小程序源码
    • 网站源码
  • 共享网络资源
  • 更多功能
    • 留言吐槽
    • 文章归档
    • 我的邻居
    • 史上今日
    • 视频解析
    • 高清壁纸
    • 公告动态
    • 广告合作
    • 关于我们
PHPPHP教程

php购物车Cart类

2024/9/6 韩俊  PHP开发 804 0

php购物车类实现了购物车中的商品的添加,修改,删除,列表,以及各种计算的相关功能。采用了php单一类的原理,安全高效,简单易扩展。

/*******************************
* author:www.vipshare8.com
* date:2023 年 01 月 29 日
*******************************/
class Cart{
	static protected $ins; //实例变量
	public $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里,这里为了防止冲突,设置了一个session后缀参数
	public static function getCat($sesSuffix='phpernote'){
		if(!isset($_SESSION['cat'.$sesSuffix])||!($_SESSION['cat'.$sesSuffix] instanceof self)){
			$_SESSION['cat'.$sesSuffix]=self::getIns();
		}
		return $_SESSION['cat'.$sesSuffix];
	}
	//入列时的检验,是否在$item里存在
	public function inItem($goods_id){
		if($this->getTypes()==0){
			return false;
		}
		//这里检验商品是否相同是通过goods_id来检测,并未通过商品名称name来检测,具体情况可做修改
		if(!(array_key_exists($goods_id,$this->item))){
			return false;
		}else{
			return $this->item[$goods_id]['num']; //返回此商品个数
		}
	}
	//添加一个商品
	/*
	* goods_id 唯一id
	* name 名称
	* num 数量
	* price 单价
	*/
	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']=floatval($price); //商品单价
	}
	//减少一个商品
	public function reduceItem($goods_id,$num){
		if($this->inItem($goods_id)==false){
			return;
		}
		if($num>$this->getNum($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 getTypes(){
		return count($this->item);
	}
	//获得一种商品的总个数
	public function getNum($goods_id){
		return $this->item[$goods_id]['num'];
	}
	// 查询购物车中有多少个商品
	public function getNumber(){
		$num=0;
		if($this->getTypes()==0){
			return 0;
		}
		foreach($this->item as $k=>$v){
			$num+=$v['num'];
		}
		return $num;
	}
	//计算总价格
	public function getPrice(){
		$price=0;
		if($this->getTypes()==0){
			return 0;
		}
		foreach($this->item as $k=>$v){
			$price+=floatval($v['num']*$v['price']);
		}
		return $price;
	}
	//清空购物车
	public function emptyItem(){
		$this->item=array();
	}
}

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

<?php
header("Content-type:text/html;charset=utf-8");
session_start();
$cart = Cart::getCat('_test');
//cart经过一次实例化之后,任意页面都可以通过$_SESSION['cat_test']调用cart类的相关方法
$_SESSION['cat_test']->addItem('1','苹果','1','8.03');
$cart->addItem('2','香蕉','3','6.5');
echo '<pre>';
print_r($_SESSION);
echo '获取购物车商品名称:'.$_SESSION['cat_test']->item[1]['name'],';',$_SESSION['cat_test']->item[2]['name'];
echo '<br />';
echo '购物车中共有商品总数:',$cart->getNumber();
echo '<br />';
echo '购物车中商品总价:',$_SESSION['cat_test']->getPrice();
//session_destroy();
//$_SESSION['cat_test']->emptyItem();

实际效果图:

php购物车类

点赞:0 分享

上一篇
php字符串替换函数str_replace速度比preg_replace快
下一篇
php提示Maximum execution time of 30 seconds exceeded...错误的解决办法
作者头像 作者名称 作者性别
韩俊

热门推荐

1 php中array_push 与 $arr[]=$value 性能比较分析
2 详解php版阿里云OSS图片上传类
3 微信小程序开发最全传值跳转页面方法
4 php array_column()函数用法
5 php布尔型
6 PHP数组函数array_count_values()的用法 统计数组的值出现的次数

评论列表

取消回复

    •  
      Login

      韩俊

      趁你现在还有时间,尽你自己最大的努力,努力做成你最想做的那件事,成为你最想成为的那种人,过着你最想过的那种生活。这个世界永远比你想的要更精彩,不要败给生活。

      退出登陆
      • 10076文章
      • 455评论
      • 80微语
  • 广告赞助

  • 二零二五年06月
    一二三四五六日
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    30      
  • 分类

    • 网站模板源码
    • IT技术笔记
    • 好资源分享
    • 共享网络资源
  • 最新文章

      • 幼儿端午祝福语简短句
        • 端午简短祝福语送家人
          • 端午文案祝福语简短励志
            • 经典的黄句子
              • 经典黄色搞笑句子
                • 迷雾通:免费使用的VPN软件
                  • 任推邦:打造你的赚钱新途径!
                    • 任推邦是正规平台吗?任推邦邀请码多少?
  • 热门文章

    • 酷狗音乐VIP账号 酷狗音乐会员账号共享2017.01.29更新
    • 芒果tv vip会员账号 芒果tv会员账号共享2017.01.29更新
    • 爱奇艺vip账号 爱奇艺/PPS会员账号共享2016.12.12更新
    • 优酷/土豆vip会员账号 优酷会员账号共享2017.01.29更新
    • 活动:免费获得爱奇艺VIP/PPS会员账号50天以上的使用权!
    • 酷我音乐VIP账号 酷我音乐会员账号共享2016.12.31更新
    • 暴风影音会员账号 暴风影音会员账号共享2016.12.31更新
    • m1905会员账号 m1905会员账号共享2016.10.21更新
  • 最新评论

    • https://www.vipshare8.com/content/templates/meta/Static/images/tx/10.jpg

      你丫的 文章写得太好了 支持下!![F3...

    • https://www.vipshare8.com/content/templates/meta/Static/images/avatar.jpg

      很棒!刚在某网站看到这个,很欣赏,可惜下...

    • https://www.vipshare8.com/content/templates/meta/Api/qqtx.php/?qq=3861064027

      呃呃呃 oooo

    • https://www.vipshare8.com/content/uploadfile/202103/thum-490d1614564497.png

      回复了111:根据激活的时间有一年的有效期!

    • https://www.vipshare8.com/content/templates/meta/Api/qqtx.php/?qq=792480561

      到2025就到期了吗?

    • https://www.vipshare8.com/content/uploadfile/202103/thum-490d1614564497.png

      [blockquote]打卡时间:16:...

    • https://www.vipshare8.com/content/templates/meta/Static/images/tx/7.jpg

      俊哥,想借用迅雷一用!但需要手机验证!看...

    • https://www.vipshare8.com/content/templates/meta/Api/qqtx.php/?qq=3293901900

      感谢大大的分享

    • https://www.vipshare8.com/content/uploadfile/202103/thum-490d1614564497.png

      回复了好奥v:如果没有解析成功,可以切换接口...

    • https://www.vipshare8.com/content/templates/meta/Api/qqtx.php/?qq=131241242441

      现在视频解析网站怎么用不了啦?

  • 网站统计 I 当前在线:346人

    • 本站管理:1位
    • 用户总数:591位
    • 置顶文章:2篇
    • 日志总数:10076篇
    • 微语总数:80条
    • 评论总数:455条
    • 标签总数:83条
    • 页面总数:8页
    • 分类总数:14个
    • 链接总数:16条
    • 运行天数:3699天
    • 最后更新:5月26日
    • 登录
    • 注册
    • 找回
    Copyright © 2025vip共享吧网站地图 网站备案豫ICP备19004194号-1

    免责声明:本站资源仅供用于学习和交流,本站部分素材内容来源于网络,如有侵权/投稿等,请及时联系站长.

    • 首页
    • 秒懂百科 秒懂百科
    • 搜索
    • 史上今日

    大家都在搜

    • 飞卢小说会员账号
    • 起点vip账号共享
    • 酷狗VIP账号
    • 设计素材
    • 酷我音乐VIP账号
    • redis
    • 乐视会员账号共享
    • 腾讯VIP账号共享
    • 华数tv会员账号
    • 迅雷VIP账号共享
    • 2345网址导航
    • 起点账号共享
    • 优酷vip账号共享
    • 全民娱乐
    • 经典句子
    • PHP教程
    • 
    • 