• 国家国际发展合作署举行揭牌仪式 2018-04-21
  • 春潮涌动,千余青少年相约科技馆 2018-04-21
  • 英俄用“关闭电视台”互相威胁 双边关系雪上加霜 2018-04-21
  • 拔不拔赖清德?蔡英文何去何从 2018-04-21
  • 我国阅读指数首次发布 人均纸书阅读量为4.66本 2018-04-20
  • 《夏目的美丽日记》绿色度测评报告 2018-04-20
  • 只要打动人心,文艺片也可以很好看 2018-04-19
  • 《荒城纪》揭幕北京大学生电影节 2018-04-19
  • 贵州桐梓:困难群众打工差点错过“移民搬迁”之后 2018-04-19
  • 《英雄联盟》2018年季中冠军赛入围赛抽签将4月24日举行 2018-04-19
  • 全国最美志愿者黄梅生:孤儿的“校长爸爸” 2018-04-19
  • 《荒城纪》揭幕北京大学生电影节 2018-04-18
  • 贵州桐梓:困难群众打工差点错过“移民搬迁”之后 2018-04-18
  • 老布什夫人芭芭拉放弃治疗,余生将在家中“颐养” 2018-04-18
  • 音乐剧《朝暮有情人》演绎港穗两地三代情 2018-04-18
  • php购物车类

    栏目: 编程语言 发布于: 2014-04-26 01:00:01

    最近有个项目中涉及到了商品购物,很显然,购物车必须得要有,记得很久以前用php做过购物车的,可惜没保存,这次不能犯以前的错误了,经过各种研究,本人也总结了一个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(!isset($_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;
    		}
    		//这里检验商品是否相同是通过goods_id来检测,并未通过商品名称name来检测,具体情况可做修改
    		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
    header("Content-type:text/html;charset=utf-8");
    session_start();
    $cart = Cart::Getcat();
    $cart->Additem('1','www.phpernote.com','1','1亿');
    $cart->Additem('2','php购物车类','3','10');
    print_r($cart);
    本站文章除注明转载外,均为本站原创或编译?;队魏涡问降淖?,但请务必注明出处。
    转载请注明:文章转载自 七星彩票平台
    本文标题:php购物车类
    IT技术书籍推荐:
    深入PHP:面向对象、模式与实践(第3版)
    深入PHP:面向对象、模式与实践(第3版)
    Mart Zandstra (作者), 陈浩 (译者), 吴孙滨 (译者), 胡丹 (译者), 李静 (译者)
    《深入PHP:面向对象、模式与实践(第3版)》是PHP专家经典力作的最新版本。书中主要介绍了如何使用面向对象技术和设计模式编写稳定的、可维护的代码,如何使用Subversion管理多个开发人员,如何使用Phing和PEAR进行构建和安装,以及将构建和测试过程自动化的策略,包括持续集成?!渡钊隤HP:面向对象、模式与实践(第3版)》适合中高级PHP程序员阅读。