<?php
/****
session加单例完成购物车类
添加商品
删除商品
修改商品数量
商品数量加1
商品数量减1
商品列表
计算商品的种类
计算商品的个数
计算总价格
清空购物车
****/
session_start();
class cart{
static public $cart=null;
public $basket=array();
protected function __construct(){
}
static public function getIns(){
if(self::$cart==null){
self::$cart=new cart;
}
return self::$cart;
}
static public function getCart(){
if(!isset($_SESSION['cart']) || !($_SESSION['cart'] instanceof self)){
$_SESSION['cart']=self::getIns();
}
return $_SESSION['cart'];
}
//添加商品
public function addItem($id,$name,$shop_price,$num){
if(!$this->hasitem($id)){
echo 'aaaa';
$this->basket[$id]=array('name'=>$name,'price'=>$shop_price,'num'=>$num);
}else{
$this->basket[$id]['num']+=$num;
}
}
//删除商品
public function delitem($id){
if($this->hasitem($id)){
unset($this->basket[$id]);
}
}
//修改商品数量
public function moditem($id,$num){
if($num==0){
$this->delitem($id);
}
else{
$this->basket[$id]['num']=$num;
}
}
//商品数量加1
public function incitem($id){
if($this->hasitem($id)){
$this->basket[$id]['num']+=1;
}
}
public function decitem($id){
if($this->hasitem($id)){
$this->basket[$id]['num']-=1;
}
if($this->basket[$id]['num']==0){
$this->delitem($id);
}
}
//计算商品的个数
public function getCount(){
if($this->cnt()==0){
return 0;
}
$count=0;
foreach($this->basket as $v){
$count+=$v['num'];
}
return $count;
}
//计算商品总价格
public function getPrice(){
if($this->cnt()==0){
return 0;
}
$price=0;
foreach($this->basket as $v){
$price+=$v['num']*$v['price'];
}
return $price;
}
//判断商品是否存在
public function hasitem($id){
return array_key_exists($id,$this->basket);
}
//计算商品的种类
public function cnt(){
return count($this->basket);
}
//商品列表
public function items(){
return $this->basket;
}
//清空购物车
public function clear(){
$this->basket=array();
}
}
/*
$cart = cart::getCart();
if($_GET['act'] == 'add') {
$id = rand(1,10);
$name = '诺基亚N' . $id;
$shop_price = 100;
$num = rand(1,5);
$cart->addItem($id,$name,$shop_price,$num);
echo 'OK';
}
if($_GET['act'] == 'show') {
print_r($cart->items());
echo '<hr />';
echo '你买了',$cart->cnt(),'种商品,共',$cart->getCount(),'个';
echo '<br />,花了',$cart->getPrice(),'元';
}
if($_GET['act'] == 'clear') {
$cart->clear();
echo '清空成功';
}
*/
?>