码迷,mamicode.com
首页 > 其他好文 > 详细

购物车类分析session+single

时间:2017-07-03 16:16:18      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:div   单例模式   protected   tin   ems   开发   访问   session   刷新   

<?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());//测试用代码

 

购物车类分析session+single

标签:div   单例模式   protected   tin   ems   开发   访问   session   刷新   

原文地址:http://www.cnblogs.com/sunyisatan/p/7111180.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!