罗江游鱼
级别: 论坛版主
UID: 1234
精华: 0
发帖: 79
威望: 80 点
金钱: 790 RMB
贡献值: 0 点
注册时间:2007-11-08
最后登录:2008-04-08
楼主  发表于: 2007-12-18 19:21

 一个面向对象OOP的具体使用事例——购物车类


通过此类的学习、相信你的oop又有提高……………………………………
==========================================

copycode
  1. <html>
  2. <head>
  3. <title>面向对象的具体使用——购物车类</title>
  4. </head>
  5. <body>
  6. <?
  7. class ShopCar                                        //类名购物车类
  8. {
  9.     var $carName;                                    //属性购物车名字
  10.     var $debug;                                    //属性
  11.     function ShopCar($carName)                        //创建购物车方法(构造函数)
  12.     {
  13.         $this->carName=$carName;                    //将购物车命名为指定名称
  14.         if(!isset($_SESSION[$carName]))                //如果没有保存为session
  15.         {
  16.             $_SESSION[$carName]=array();            //把购物车名称保存到session
  17.         }
  18.     }
  19.     function addCar($type,$name,$val)                    //向购物车中增加商品方法
  20.     {
  21.         if(array_key_exists($type,$_SESSION[$this->carName]))//如果类别已经存在
  22.         {
  23.             if(array_key_exists($name,$_SESSION[$this->carName][$type]))//如果商品存在
  24.             {
  25.             if($this->debug)echo "<p>已有{$name}商品,不必增加<p>";    //输出相应信息
  26.             return false;                                        //返回假
  27.             }
  28.             else                                                //如果商品不存在
  29.             {
  30.                 $_SESSION[$this->carName][$type][$name]=$val;        //在session中设定
  31.             }
  32.         }
  33.         else                                                    //如果类别不存在
  34.         {
  35.             $_SESSION[$this->carName][$type]=array($name=>$val);    //在sessuib是设定
  36.         }
  37.         return true;                                            //返回真值
  38.     }
  39.     function editCar($type,$name,$var)                                //编辑购物车方法
  40.     {
  41.         if(!array_key_exists($name,$_SESSION[$this->carName][$type]))    //如果类别不存在
  42.         {
  43.             if($this->debug)echo "<p>没有{$name}商品,修改失败<p>";    //输出错误信息
  44.             return false;                                        //返回假值
  45.         }
  46.         $_SESSION[$this->carName][$type][$name]=$var;                //在session中设定
  47.         return true;
  48.     }
  49.     function delCarType($type)                                    //删除购物车类别
  50.     {
  51.         if(!array_key_exists($type,$_SESSION[$this->carName]))            //如果类别不存在
  52.         {
  53.             if($this->debug)echo "<p>没有{$type}类别,删除失败<p>";    //输出错误信息
  54.             return false;                                        //返回假值
  55.         }
  56.         unset($_SESSION[$this->carName][$type]);                    //在session中删除
  57.         return true;                                            //返回真值
  58.     }
  59.     function delCarPro($type,$name)                                //删除商品
  60.     {
  61.         if(!array_key_exists($name,$_SESSION[$this->carName][$type]))    //如果商品不存在
  62.         {
  63.             if($this->debug)echo "<p>没有{$name}商品,删除失败<p>";    //输出错误信息
  64.             return false;                                        //返回假值
  65.         }
  66.         unset($_SESSION[$this->carName][$type][$name]);                //在session中删除
  67.         return true;                                            //返回真值
  68.     }
  69.     function delCar()                                            //删除购物车
  70.     {
  71.         session_unregister($this->carName);                        //在session中注销
  72.     }
  73.     function getCarData()                                        //获取购物车数据
  74.     {
  75.         return $_SESSION[$this->carName];                        //通过session返回
  76.     }
  77. }
  78. $my_car=new Shopcar("my_shopcar");                                //创建对象时一定要带参数,否则会有出错提示。
  79. $my_car->addCar("水果","苹果",10);                                    //为购物车添加商品
  80. $my_car->addCar("水果","香蕉",5);
  81. $my_car->addCar("水果","梨",4);
  82. $my_car->addCar("蔬菜","白菜",10);
  83. $my_car->addCar("蔬菜","萝卜",3);
  84. $my_car->addCar("蔬菜","菠菜",12);
  85. $my_car->addCar("蔬菜","茄子",8);
  86. $my_car->addCar("植物","小草",9);
  87. $my_car->addCar("植物","草",9);
  88. $temp=$my_car->getCarData();
  89. print_r ($temp);
  90. ?>
  91. </body>
  92. </html>