<?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