/** 燕十八 公益PHP培训
课堂地址:YY频道88354001
学习社区:www.zixue.it **/
/*
购物车类
单例+session
*/
class cartLib{
static $ins=null;
public $goods=array();
final protected function __construct() {
}
final protected function __clone() {
}
static function getIns(){
if(!(self::$ins instanceof self)){
self::$ins=new self();
}
return self::$ins;
}
static function getCart(){
if(!(isset($_SESSION['cart']))||!($_SESSION['cart'] instanceof self)){
$_SESSION['cart']=self::getIns();
}
return $_SESSION['cart'];
}
//增加商品到购物车,$id为产品id,$name产品名称,$price产品价格,$num产品数量
public function add($id,$name,$price,$num=1){
if($this->isHave($id)){
$this->incNum($id,$num);
return;
}
$this->goods[$id]=array('name'=>$name,'price'=>$price,'num'=>$num);
}
//判断购物车中是否已经有该产品
public function isHave($id){
return array_key_exists($id,$this->goods);
}
//商品数量加$num
public function incNum($id,$num){
$this->goods[$id]['num']+=$num;
}
//商品数量减$num
public function decNum($id,$num){
$this->goods[$id]['num']-=$num;
if($this->goods[$id]['num']==0){
$this->delGoods($id);
}
}
//修改购物车$id的产品数量为$num
public function updateNum($id,$num){
$this->goods[$id]['num']=$num;
if($this->goods[$id]['num']==0){
$this->delGoods($id);
}
}
//显示购物车中的所有产品的详细
public function view(){
if(!$this->haveGoods()){
echo '购物车中没有产品';
exit();
}
return $this->goods;
}
//显示购物车中的产品种类总和
public function totalKind(){
if(!$this->haveGoods()){
echo '购物车中没有产品';
exit();
}
return count($this->goods);
}
//显示购物车中产品数量总和
public function totalNum(){
if(!$this->haveGoods()){
echo '购物车中没有产品';
exit();
}
$totalNum=0;
foreach($this->goods as $v){
$totalNum+=$v['num'];
}
return $totalNum;
}
//显示购物车产品的总价值
public function totalPrice(){
if(!$this->haveGoods()){
echo '购物车中没有产品';
exit();
}
$totalPrice=0;
foreach($this->goods as $v){
$totalPrice+=$v['num']*$v['price'];
}
return $totalPrice;
}
//清空购物车
public function destroy(){
$this->goods=null;
}
//检查购物车中是否有商品
public function haveGoods(){
if($this->goods!=null){
return true;
}else{
return false;
}
}
//删除某个产品
public function delGoods($id){
unset($this->goods[$id]);
}
}