龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

php 商城购物车以PHP单例模式实现。

时间:2014-11-22 16:25来源:网络整理 作者:网络 点击:
分享到:
商城购物车以PHP单例模式实现。 今天上班有一点空闲时间拿出来做了一个PHP商城购物车。现在我放到os上,各位看贴希望多多建议一下啊! 在此谢过了!实现很简单,把所有的需求都罗

今天上班有一点空闲时间拿出来做了一个PHP商城购物车。现在我放到os上,各位看贴希望多多建议一下啊! 在此谢过了!

实现很简单,把所有的需求都罗列出来。写码就容易了。

购物车的开发

1: 购物车放在session里

2: 单例模式来开发

功能:

增删改查

增一个商品

减少一个商品(改,数量)

去掉一个商品

清空购物车

查:

返回所有商品列表

一共有几种商品

一共有几个商品

购物车里商品一共多少钱

<?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);
//该片段来自于http://outofmemory.cn
精彩图集

赞助商链接