当前位置:  开发笔记 > 编程语言 > 正文

PHP单例模式实现商城购物车功能-PHP实例教程

PHP单例模式实现商城购物车功能-PHP实例教程完成这个小功能必须会写需求养成好的习惯Php购物车的开发需求功能如下1:购物车放在session里2:单例模式来开发功能:增删改查增一个商品减少...">

 

  PHP单例模式实现商城购物车功能-PHP实例教程完成这个小功能必须会写需求 养成好的习惯 Php购物车的开发需求功能如下 1: 购物车放在session里 2: 单例模式来开发 功能: 增删改查 增一个商品 减少

  PHP单例模式实现商城购物车功能-PHP实例教程完成这个小功能必须会写需求 养成好的习惯

  Php购物车的开发需求功能如下:php100.com

  1: 购物车放在session里

  2: 单例模式来开发

  功能:

  增删改查

  增一个商品

  减少一个商品(改,数量)

  删

  去掉一个商品

  清空购物车

  查:

  返回所有商品列表

  一共有几种商品

  一共有几个商品

  购物车里商品一共多少钱

  当你了解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(!($_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;

  }

  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

  include_once('Cart.php');

  $cart = Cart::Getcat();

  $cart->Additem('1','谍匪','5','9999');

  print_r($cart);


推荐阅读
  • 本文详细探讨了Java集合框架的使用方法及其性能特点。首先,通过关系图展示了集合接口之间的层次结构,如`Collection`接口作为对象集合的基础,其下分为`List`、`Set`和`Queue`等子接口。其中,`List`接口支持按插入顺序保存元素且允许重复,而`Set`接口则确保元素唯一性。此外,文章还深入分析了不同集合类在实际应用中的性能表现,为开发者选择合适的集合类型提供了参考依据。 ... [详细]
  • 本文深入解析了 Apache 配置文件 `httpd.conf` 和 `.htaccess` 的优化方法,探讨了如何通过合理配置提升服务器性能和安全性。文章详细介绍了这两个文件的关键参数及其作用,并提供了实际应用中的最佳实践,帮助读者更好地理解和运用 Apache 配置。 ... [详细]
  • 本文作为“实现简易版Spring系列”的第五篇,继前文深入探讨了Spring框架的核心技术之一——控制反转(IoC)之后,将重点转向另一个关键技术——面向切面编程(AOP)。对于使用Spring框架进行开发的开发者来说,AOP是一个不可或缺的概念。了解AOP的背景及其基本原理,对于掌握这一技术至关重要。本文将通过具体示例,详细解析AOP的实现机制,帮助读者更好地理解和应用这一技术。 ... [详细]
  • C语言中按位取反与按位与运算符的使用方法及应用场景解析
    位运算是一种基于二进制的计算方式,在系统软件开发中经常用于处理二进制位的相关问题。C语言提供了六种位操作运算符,专门用于对整型数据(包括带符号和无符号的char、short等)进行操作。本文详细解析了按位取反和按位与运算符的使用方法及其典型应用场景,帮助开发者更好地理解和应用这些运算符。 ... [详细]
  • 微信支付授权目录配置详解及操作步骤
    在使用微信支付时,若通过WeixinJSBridge.invoke方法调用支付功能,可能会遇到“当前页面URL未注册”的错误提示,导致get_brand_wcpay_request:fail调用微信JSAPI支付失败。为解决这一问题,需要正确配置微信支付授权目录,确保支付页面的URL已成功注册。本文将详细介绍微信支付授权目录的配置步骤和注意事项,帮助开发者顺利完成支付功能的集成与调试。 ... [详细]
  • 本文介绍了如何通过掌握 IScroll 技巧来实现流畅的上拉加载和下拉刷新功能。首先,需要按正确的顺序引入相关文件:1. Zepto;2. iScroll.js;3. scroll-probe.js。此外,还提供了完整的代码示例,可在 GitHub 仓库中查看。通过这些步骤,开发者可以轻松实现高效、流畅的滚动效果,提升用户体验。 ... [详细]
  • Ceph API微服务实现RBD块设备的高效创建与安全删除
    本文旨在实现Ceph块存储中RBD块设备的高效创建与安全删除功能。开发环境为CentOS 7,使用 IntelliJ IDEA 进行开发。首先介绍了 librbd 的基本概念及其在 Ceph 中的作用,随后详细描述了项目 Gradle 配置的优化过程,确保了开发环境的稳定性和兼容性。通过这一系列步骤,我们成功实现了 RBD 块设备的快速创建与安全删除,提升了系统的整体性能和可靠性。 ... [详细]
  • 掌握PHP框架开发与应用的核心知识点:构建高效PHP框架所需的技术与能力综述
    掌握PHP框架开发与应用的核心知识点对于构建高效PHP框架至关重要。本文综述了开发PHP框架所需的关键技术和能力,包括但不限于对PHP语言的深入理解、设计模式的应用、数据库操作、安全性措施以及性能优化等方面。对于初学者而言,熟悉主流框架如Laravel、Symfony等的实际应用场景,有助于更好地理解和掌握自定义框架开发的精髓。 ... [详细]
  • 在稀疏直接法视觉里程计中,通过优化特征点并采用基于光度误差最小化的灰度图像线性插值技术,提高了定位精度。该方法通过对空间点的非齐次和齐次表示进行处理,利用RGB-D传感器获取的3D坐标信息,在两帧图像之间实现精确匹配,有效减少了光度误差,提升了系统的鲁棒性和稳定性。 ... [详细]
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • 浅析PHP中$_SERVER[
    在PHP后端开发中,`$_SERVER["HTTP_REFERER"]` 是一个非常有用的超级全局变量,它可以获取用户访问当前页面之前的URL。本文将详细介绍该变量的使用方法及其在不同场景下的应用,如页面跳转跟踪、安全验证和用户行为分析等。通过实例解析,帮助开发者更好地理解和利用这一功能。 ... [详细]
  • SQLSharper 2014 是一款专为 SQL Server Management Studio (SSMS) 设计的功能增强插件,旨在提升 T-SQL 开发者的效率。该插件提供了多种实用工具,包括快速查询数据库对象、详细查看表结构、优化查询结果导出以及自动生成代码等。适用于需要高效管理和开发 SQL 数据库的专业人士。 ... [详细]
  • 在运行时动态获取Entity Framework中的ObjectSet可以通过反射机制实现。这种方法允许开发者在应用程序运行期间根据需要加载不同的实体集合,从而提高代码的灵活性和可扩展性。通过使用`DbContext`类的`Set`方法,结合类型信息,可以轻松地实现这一目标。此外,还可以利用`Type`对象和泛型方法来进一步增强动态性,确保在处理多种实体类型时更加高效和安全。 ... [详细]
  • 在 DevCon 4 上,演讲者深入探讨了 Serenity 中的点对点网络架构。该演讲详细解析了 Serenity 网络协议的设计原理与实现细节,涵盖了节点发现、数据传输及安全性等方面的关键技术。通过丰富的案例和图表,演讲者全面展示了 Serenity 网络的高效性和可靠性。 ... [详细]
author-avatar
curlt_357
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有