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);
登录后复制
09-07 22:41