购物车类分析session+single

<?php
/**
 * 购物车类分析
 * 1.无论在网站刷新了多少次页面,或者新增加了多少个商品。打开购物车查看,看到的结果都市一样的
 *         即,打开A商品刷新,打开B商品刷新,看到的购物车应该是一样的
 *         整站范围内购物车是全局有效有的。
 *     解决:将购物车的信息放在数据库,也可以放在session里。
 * 2.购物车全局有效,即购物车的实例只能有一个
 *         不能出现3个页面,,买3个商品,就形成了3个购物车实例
 *     解决:单例模式
 *
 * 技术支持:seesion+single
 *
 * 功能分析:
 * 判断某个商品是否存在
 * 添加商品
 * 删除商品
 * 修改商品的数量
 *
 * 某商品数量+1
 * 某商品数量-1
 *
 * 查询购物车的商品种类
 * 查询购物车的商品数量
 * 查询购物车的商品总金额
 * 返回购物车里的所有商品
 * 清空购物车
 */
session_start();//使用session必须开启session

class CartTool{
    //此处要要到单例模式
    private static $ins = null;
    private $items = array();//用空数组存储商品
    public $single = 0;//测试用代码
    //构造方法受保护
    protected function __construct(){
        $this->single = mt_rand(1,10000);//测试代码
    }
    //获取实例。开发一个方法供外部调用
    public static function getIns(){
        //判断$ins是否是自身的实例
        // if(!(self::$ins instanceof self)){
        if(self::$ins === null){//若属性为null则是第一次访问
            self::$ins = new self();
        }
        return self::$ins;
    }

    //将购物车的单例对象放到session里面
    public static function getCart(){
        //sessoin里面没有购物车,或者不是session里面的实例
        if(!isset($_SESSION[‘cart‘]) || !($_SESSION[‘cart‘] instanceof self)){
            $_SESSION[‘cart‘] = self::getIns();
        }
        return $_SESSION[‘cart‘];
    }
}
//随意更换地址后的数据如果一致,说明single+session已经实现。
//整个网站都共享这一个实例。全局有效+单例
print_r(CartTool::getCart());//测试用代码
时间: 2024-10-28 21:29:53

购物车类分析session+single的相关文章

购物车类2分析session+single

<?php /** * 购物车类分析 * 1.无论在网站刷新了多少次页面,或者新增加了多少个商品.打开购物车查看,看到的结果都市一样的 * 即,打开A商品刷新,打开B商品刷新,看到的购物车应该是一样的 * 整站范围内购物车是全局有效有的. * 解决:将购物车的信息放在数据库,也可以放在session里. * 2.购物车全局有效,即购物车的实例只能有一个 * 不能出现3个页面,,买3个商品,就形成了3个购物车实例 * 解决:单例模式 * * 技术支持:seesion+single * * 功能分析

PHP实现商城购物车类(SESSION+单例模式 )(亲测)

1 <?php 2 if(!isset($_SESSION)) 3 session_start(); 4 //分析购物车 5 //整站范围内,购物车全局有效 6 //技术 : session购物车 + 单例模式 7 //增删商品,判断商品是否存在 8 //查询商品种类,数量,查询总金额,返回购物车所有商品 9 //某商品数量+1 -1 10 class CartTool{ 11 private static $ins = null; //实例保存 12 private $items = arra

PHP购物车类

<?php /** * 购物车类 */ session_start(); class Cart{ private static $ins = null; private $items = array(); protected function __construct(){} // 获取实例 protected static function getIns(){ if(!(self::$ins instanceof self)){ self::$ins = new self(); } return

php之购物车类思路及代码

<?php /* 购物车类 1.整站范围内,购物车--全局有效 解决:把购物车的信息,放在session里 2.既然全局有效,购物车的实例只有一个 解决:单例模式 技术选型:session+单例 功能分析 判断商品是否存在 添加商品 删除商品 修改商品的数量 某商品数量+1 某商品数量-1 查看购物车的商品种类 商品数量 商品的总金额 所有商品 清空购物车 */ session_start(); class CartTool { private static $ins = null; priva

Tomcat7.0源码分析——Session管理分析(上)

前言 对于广大java开发者而已,对于J2EE规范中的Session应该并不陌生,我们可以使用Session管理用户的会话信息,最常见的就是拿Session用来存放用户登录.身份.权限及状态等信息.对于使用Tomcat作为Web容器的大部分开发人员而言,Tomcat是如何实现Session标记用户和管理Session信息的呢? 概述 Session Tomcat内部定义了Session和HttpSession这两个会话相关的接口,其类继承体系如图1所示. 图1 Session类继承体系图1中额外

MFC的窗口分割的设计与实现以及CSplitterWnd 类分析

1 引言 在Microsoft VC++ 6.0 中,基于MFC 的应用程序一般分为以下几种:多文档界面(MDI). 单文档界面(SDI)以及基于对话框的应用程序.其中单文档又可分为单视图的和多视图的, 一般情况下,单文档仅需要单视图就够了,如Windows 自带的记事本.画图程序等等,但 在一些情况下,单文档需要多视图支持,比如同时观察文档的不同部分,同时从不同的角度 观察同一文档等. 在MFC 的框架下,文档对象(CDocument)有一个保存其所有视图的列表,并提供了 增加视图(AddVi

JAVA File类 分析(三)

前面两篇与大家一起研究了unix下的文件系统,本篇将和大家一起分析 文件的属性和文件夹. ok,废话不说,先来段代码 #include <stdio.h> #include <sys/types.h> #include <dirent.h> void do_ls(char[]); void main(int ac,char *av[]){ if(ac==1) do_ls("."); else{ while(--ac){ printf("%s

Tomcat 学习进阶历程之Tomcat架构与核心类分析

前面的http及socket两部分内容,主要是为了后面看Tomcat源码而学习的一些网络基础.从这章开始,就开始实际深入到Tomcat的'内在'去看一看. 在分析Tomcat的源码之前,准备先看一下Tomcat的架构与一些核心类的简单分析,并简单介绍一下Tomcat是如何处理一次Http请求的.这部分内容有相当一部分来源于网络,在此,感谢原作者的贡献. Tomcat的总体架构 Tomcat的架构关系可以从Tomcat的配置文件server.xml中看到端倪. 从上图中可以看出Tomcat 的心脏

Spring源码分析——BeanFactory体系之抽象类、类分析(二)

上一篇分析了BeanFactory体系的2个类,SimpleAliasRegistry和DefaultSingletonBeanRegistry——Spring源码分析——BeanFactory体系之抽象类.类分析(一),今天继续分析. 一.工厂Bean注册支持——FactoryBeanRegistrySupport 废话不多说,直接看我注释的源码: /* * Copyright 2002-2012 the original author or authors. * * Licensed und