zoukankan      html  css  js  c++  java
  • TP5框架封装购物车类


    <?php

    namespace HomeTool;


    abstract class ACartTool{
    /**
    * 向购物车中添加1个商品
    * @param $goods_id int 商品id
    * @param $goods_name String 商品名
    * @param $shop_price float 价格
    * @return boolean
    */
    abstract public function add($goods_id,$goods_name,$shop_price);
    /**
    * 减少购物车中1个商品数量,如果减少到0,则从购物车删除该商品
    * @param $goods_id int 商品id
    */
    abstract public function decr($goods_id);
    /**
    * 从购物车删除某商品
    * @param $goods_id 商品id
    */
    abstract public function del($goods_id);
    /**
    * 列出购物车所有的商品
    * @return Array
    */
    abstract public function items();
    /**
    * 返回购物车有几种商品
    * @return int
    */
    abstract public function calcType();
    /**
    * 返回购物车中商品的个数
    * @return int
    */
    abstract public function calcCnt();
    /**
    * 返回购物车中商品的总价格
    * @return float
    */
    abstract public function calcMoney();
    /**
    * 清空购物车* @return void
    */
    abstract public function clear();

    }






    class CarTool extends ACartTool{
    public $item = array();
    public static $ins = null;

    public static function getIns(){
    if(self::$ins === null){
    self::$ins = new self();
    }
    return self::$ins;

    }


    //防止外部new
    final protected function __construct(){
    $this->item = session('cart');
    }
    /**
    * 向购物车中添加1个商品
    * @param $goods_id int 商品id
    * @param $goods_name String 商品名
    * @param $shop_price float 价格
    * @return boolean
    */
    public function add($goods_id,$goods_name,$shop_price){
    if(isset($this->item[$goods_id])){
    $this->item[$goods_id]['num'] += 1;
    } else {
    $goods = array('goods_id'=>$goods_id,'goods_name'=>$goods_name,'shop_price'=>$shop_price,'num'=>1);
    $this->item[$goods_id] = $goods;
    }
    }
    /**
    * 减少购物车中1个商品数量,如果减少到0,则从购物车删除该商品
    * @param $goods_id int 商品id
    */
    public function decr($goods_id){
    if(isset($this->item[$goods_id])){
    $this->item[$goods_id]['num'] -= 1;
    }
    if($this->item[$goods_id]['num'] <= 0){
    $this->del($goods_id);
    }
    }
    /**
    * 从购物车删除某商品
    * @param $goods_id 商品id
    */
    public function del($goods_id){
    unset($this->item[$goods_id]);
    }
    /**
    * 列出购物车所有的商品
    * @return Array
    */
    public function items(){
    return $this->item;
    }
    /**
    * 返回购物车有几种商品
    * @return int
    */
    public function calcType(){
    return count($this->item);
    }
    /**
    * 返回购物车中商品的个数
    * @return int
    */
    public function calcCnt(){
    $cnt = 0;
    foreach($this->item as $v){
    $cnt += $v['num'];
    }
    return $cnt;
    }
    /**
    * 返回购物车中商品的总价格
    * @return float
    */
    public function calcMoney(){
    $money = 0;
    foreach($this->item as $v){
    $money += $v['num'] * $v['shop_price'];
    }
    return $money;
    }
    /**
    * 清空购物车* @return void
    */
    public function clear(){
    return $this->item = array();
    }

    //用session吧$item值存储起来
    public function __destruct(){
    session('cart',$this->item);
    }
    }

    ————————————————
    版权声明:本文为CSDN博主「佐住地球转」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/u010506564/article/details/78375869

  • 相关阅读:
    语料和文本处理
    seq2seq+torch7聊天机器人bug处理
    unity3d inputfield标签控制台打印object
    多种语言tcp编程
    处理json中的空格
    安卓无法访问Azure服务器和微软API
    Xamarin/Unity3d无法访问Azure服务器或者微软API
    unity3d C# soket客户端接受失败
    unity3d之public变量引发错误
    unity3d,java,c#,python,rospy的socket通信测试
  • 原文地址:https://www.cnblogs.com/mmore123/p/12881354.html
Copyright © 2011-2022 走看看