最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • php购物车Cart类

    php购物车类实现了购物车中的商品的添加,修改,删除,列表,以及各种计算的相关功能。采用了php单一类的原理,安全高效,简单易扩展。

    /*******************************
    * author:www.codesou.cn
    * date:2023 年 01 月 29 日
    *******************************/
    class Cart{
    	static protected $ins; //实例变量
    	public $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里,这里为了防止冲突,设置了一个session后缀参数
    	public static function getCat($sesSuffix='phpernote'){
    		if(!isset($_SESSION['cat'.$sesSuffix])||!($_SESSION['cat'.$sesSuffix] instanceof self)){
    			$_SESSION['cat'.$sesSuffix]=self::getIns();
    		}
    		return $_SESSION['cat'.$sesSuffix];
    	}
    	//入列时的检验,是否在$item里存在
    	public function inItem($goods_id){
    		if($this->getTypes()==0){
    			return false;
    		}
    		//这里检验商品是否相同是通过goods_id来检测,并未通过商品名称name来检测,具体情况可做修改
    		if(!(array_key_exists($goods_id,$this->item))){
    			return false;
    		}else{
    			return $this->item[$goods_id]['num']; //返回此商品个数
    		}
    	}
    	//添加一个商品
    	/*
    	* goods_id 唯一id
    	* name 名称
    	* num 数量
    	* price 单价
    	*/
    	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']=floatval($price); //商品单价
    	}
    	//减少一个商品
    	public function reduceItem($goods_id,$num){
    		if($this->inItem($goods_id)==false){
    			return;
    		}
    		if($num>$this->getNum($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 getTypes(){
    		return count($this->item);
    	}
    	//获得一种商品的总个数
    	public function getNum($goods_id){
    		return $this->item[$goods_id]['num'];
    	}
    	// 查询购物车中有多少个商品
    	public function getNumber(){
    		$num=0;
    		if($this->getTypes()==0){
    			return 0;
    		}
    		foreach($this->item as $k=>$v){
    			$num+=$v['num'];
    		}
    		return $num;
    	}
    	//计算总价格
    	public function getPrice(){
    		$price=0;
    		if($this->getTypes()==0){
    			return 0;
    		}
    		foreach($this->item as $k=>$v){
    			$price+=floatval($v['num']*$v['price']);
    		}
    		return $price;
    	}
    	//清空购物车
    	public function emptyItem(){
    		$this->item=array();
    	}
    }

    以上购物车类的调用示例如下:

    <?php
    header("Content-type:text/html;charset=utf-8");
    session_start();
    $cart = Cart::getCat('_test');
    //cart经过一次实例化之后,任意页面都可以通过$_SESSION['cat_test']调用cart类的相关方法
    $_SESSION['cat_test']->addItem('1','苹果','1','8.03');
    $cart->addItem('2','香蕉','3','6.5');
    echo '<pre>';
    print_r($_SESSION);
    echo '获取购物车商品名称:'.$_SESSION['cat_test']->item[1]['name'],';',$_SESSION['cat_test']->item[2]['name'];
    echo '<br />';
    echo '购物车中共有商品总数:',$cart->getNumber();
    echo '<br />';
    echo '购物车中商品总价:',$_SESSION['cat_test']->getPrice();
    //session_destroy();
    //$_SESSION['cat_test']->emptyItem();

    实际效果图:

    php购物车类

    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » php购物车Cart类
    • 7会员总数(位)
    • 25846资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 293稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情