首页 > php教程 > PHP源码 > 正文

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

PHP中文网
发布: 2016-05-25 17:10:47
原创
1315人浏览过

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);
登录后复制

                   

西亚购物系统 2004
西亚购物系统 2004

一套自选网上商城精美模版,自主商品管理,自行网店经营的网上商城平台,系统具有强大的商品管理、购物车、订单统计、会员管理等功能,同时拥有灵活多变的商品管理、新闻管理等功能,功能强劲的后台管理界面,无需登录FTP,通过IE浏览器即可管理整个网站。西亚购物平台经多方面权威调查和研究为您精心开发了很多特色实用功能。使商品展示、管理、服务全面升级。西亚购物平台为您提供了多款专业美观的店面样式、俱备完整的购物

西亚购物系统 2004 0
查看详情 西亚购物系统 2004

                   

相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号