<?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 '清空成功';

}

*/

?>