zoukankan      html  css  js  c++  java
  • PHP购物车类练习代码

    ---恢复内容开始---

    购物车类

    代码如下:

      1 class Cart
      2 {
      3     static protected $object;   //变量
      4     static protected $item = array();     //存储商品信息的数组
      5     
      6     final protected function __construct()
      7     {
      8         //如果父类中的方法被声明为final,则子类无法覆盖该方法; 如果一个类被声明为final,则不能被继承。禁止在外部使用
      9     }
     10     
     11     final protected function __clone()
     12     {
     13         //同上
     14     }
     15     
     16     //实例化类
     17     static public function init()
     18     {
     19         return new self;
     20     }
     21     
     22     //获取实例对象
     23     static public function getObject()
     24     {
     25         if( !isset($_SESSION['cart']) || !($_SESSION['cart'] instanceof self) )
     26         {
     27             $_SESSION['cart'] = self::init();
     28             self::$object = $_SESSION['cart'];
     29             return self::$object;
     30         }
     31     }
     32     
     33     function __get($name)
     34     {
     35         return self::$$name;
     36     }
     37     
     38     //获取购物车内商品的种类数量
     39     function getType()
     40     {
     41         return count(self::$item);
     42     }
     43     
     44     //检测购物车内是否存在某种商品
     45     function inItem($goodsId)
     46     {
     47         if( $this->getType() == 0 )   //若购物车内不存在任何商品,自然也就不存在此种商品
     48         {
     49             return;   //不存在
     50         }
     51         
     52         if( array_key_exists($goodsId,self::$item) )
     53         {
     54             return true;   //存在
     55         }
     56         else
     57         {
     58             return false;   //不存在
     59         }
     60     }
     61     
     62     //增加一种商品:若此商品信息已经存在于购物车内,只需增加商品数量;若购物车内不存在此商品的任何信息,需要增加此商品的全部信息
     63     function addItem($goodsId,$name,$num,$price)
     64     {
     65         if( $this->inItem($goodsId) )
     66         {
     67             self::$item[$goodsId]['num'] += $num;
     68             return;
     69         }
     70         
     71         self::$item[$goodsId] = array();
     72         
     73         self::$item[$goodsId]['name'] = $name;
     74         self::$item[$goodsId]['num'] = $num;
     75         self::$item[$goodsId]['price'] = $price;
     76         
     77     }
     78     
     79     //减少一种商品的数量
     80     function reduceItem($goodsId,$num)   
     81     {
     82         if( $num > self::$item[$goodsId]['num'] )
     83         {
     84             unset(self::$item[$goodsId]);
     85         }
     86         else
     87         {
     88             self::$item[$goodsId]['num'] -= $num;
     89         }
     90     }
     91     
     92     //完全去掉某种商品
     93     function delItem($goodsId)
     94     {
     95         unset(self::$item[$goodsId]);
     96     }
     97     
     98     //获取一种商品的数量
     99     function getNum($goodsId)
    100     {
    101         return self::$item[$goodsId]['num'];
    102     }
    103     
    104     //获取所有商品的数量
    105     function getNumber()
    106     {
    107         $num = 0;
    108         foreach( self::$item as $value )
    109         {
    110             $num += $value['num'];
    111         }
    112         return $num;
    113     }
    114     
    115     //获取所有商品的价格
    116     function getPrice()
    117     {
    118         $price = 0;
    119         foreach( self::$item as $value )
    120         {
    121             $price += $value['price']*$value['num'];
    122         }
    123         return $price;
    124     }
    125     
    126     //情况购物车
    127     function emptyCart()
    128     {
    129         self::$item = array();
    130     }
    131 }

    测试代码,如下:

     1 $cart = Cart::getObject();
     2 var_dump($cart);
     3 $cart->addItem(1,'PHP','30','50');
     4 $cart->addItem(2,'Java','3','50');
     5 $item = $cart->__get('item');
     6 var_dump($item);
     7 $price = $cart->getPrice();
     8 var_dump($price);
     9 $num = $cart->getNum(1);
    10 var_dump($num);
    11 $number = $cart->getNumber();
    12 var_dump($number);
    13 $cart->reduceItem(1,20);
    14 $item = $cart->__get('item');
    15 var_dump($item);

    ---恢复内容结束---

  • 相关阅读:
    面试题总结
    软件测试面试心得
    git上传本地文件到gitee上
    一个测试员失业的自述
    整理了Linux常用命令变量
    java B2B2C多用户商城系统-搜索分词架构分享
    B2B2C商城系统-Table组件封装代码分享
    Javashop 电商系统sso登录实现
    b2b2c商城系统-会员预存款架构及源码分享
    java 商城系统源码分享-snowflake发号器
  • 原文地址:https://www.cnblogs.com/chuganghong/p/3061308.html
Copyright © 2011-2022 走看看