商城购物车以PHP单例模式实现。
程序员文章站
2022-03-28 16:39:41
...
1. [代码][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);