购物车类分析session+single

Posted SYsunyi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了购物车类分析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());//测试用代码

 

以上是关于购物车类分析session+single的主要内容,如果未能解决你的问题,请参考以下文章

php之购物车类思路及代码

购物车

Session案例:简易的购物车

session与cookies

什么是SNP(Single Nucleotide Polymorphism)?

商城项目购物车的实现