Chinaunix首页 | 论坛 | 博客
  • 博客访问: 614283
  • 博文数量: 233
  • 博客积分: 2221
  • 博客等级: 大尉
  • 技术积分: 3184
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-16 14:01
个人简介

瓜瓜派的瓜瓜

文章分类

全部博文(233)

文章存档

2013年(28)

2012年(197)

2011年(8)

分类: IT业界

2012-01-09 15:53:08

/**
* 商品的基本属性,只要用户添加一任意一件商品放购物车,该类就会被实例化一次并且对象会保存到购物车里。
* @author hojust
*
*/
class Product extends Model{
//表名
protected $_table="product";
//主键名
protected $_key="id";  

//当前用户购买该商品的数量
private $quantity=1;
  
private $id;           //商品ID
private $name;         //名称
private $price;        //价格
private $image;      
/**
  * 根据商品ID从数据库中获取相关商品信息
  * @param $product_id 商品ID
  */
public function __construct($product_id){...}

/*
  *如果购买相同商品,该商品的数量相应增加
  */
public function incrementQuantity($quantity=1){...}


/**
  * 单个商品的价格(价格*数量)
  * @return float
  */
public function getTotal(){...}

/**
  * 获取缩略图片
  */
public function getSamllImage(){...}

public function getPrice() {...}

public function getName() {...}
...........
?>


/**
* 购物车类
* @author hojust
* 该购物车继承了PHP标准库的(ArrayObject)超类
* 它的主要功能就是把对象存放在一个protected类型的数组里面.在把购物车(Cart)对象保存到Session里
* 然后就可以能过Session获得购物车(Cart)对象,在通过用for或foreach输出所有商品对象
*
*/
class Cart extends ArrayObject{

//存放商品对象
protected $_product=array();
  
public function __construct(){
  parent::__construct($this->_product);
}

/**
  *  统计购物车里的所有商品的总价格
  *  @return float
  */
public function getCartTotal(){
  $sum=0;
  foreach($this as $product){
   //每件商品的单价
   $sum+=$product->getTotal();
  }
  return $sum;
}

/**
  *当用户购买了相同商品时,不保存商品对象,而是在原来的商品数量加1
  *@return boolean
  */
public function offsetSet($offset,$product){
  if( $this->offsetExists($offset) ){
   $this[$offset]->incrementQuantity(1);
   return true;
  }
  parent::offsetSet($offset,$product);
}
}
?>

//把商品添加到购物车里是相当简单
$cart=new Cart();
$cart[1]=new Product(1);
$cart[2]=new Product(2);
$cart[2]=new Product(2); //当下标一样时,购物车不会存储该对象,而是在原以存在的商品数量上加1
$cart[3]=new Product(3);

//把商品对象从购物车里读出来
foreach( $cart as $product){
   echo $product->getName();
   echo $product->getPrice();
   echo $product->getTotal();
}

echo $cart->getCartTotal();//所有商品的总价格。
?>
只是觉得这种封装对后面的购物车增,删,查,等操作都非常较灵活,是从PHP程序设计 模式. 里看到的,在毕业设计中用了下,还不错.就是把Cart对象保存到session里出了点小问题.

摘自:,hojust
阅读(1567) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~