rand = mt_rand(1,99999);
}
/**
* 防止被复制
*/
final protected function __clone(){ }
/**
* 获取实例
* */
protected static function getins(){
//判断该实例是否被实例化
if(!(self::$ins instanceof self)){
self::$ins = new self();
}
return self::$ins;
}
/**
* 把购物车的单例对象放到session里
* */
public static function getcart(){
//判断购物车是否存在,并且该购物车是否是我的
if(!isset($_session['cart']) || !($_session['cart'] instanceof self)){
$_session['cart'] = self::getins();
}
return $_session['cart'];
}
/**
* 添加商品
* @param $id 商品id
* @param $name 商品名称
* @param $price 商品价格
* @param $num 商品数量
*/
public function additem($id,$name,$price,$num=1){
if($this->hasitem($id)){//如果商品存在,则数量相加
$this->incnum($id,$num);
return ;
}
$item = array();
$item['name'] = $name;
$item['price'] = $price;
$item['num'] = $num;
$this->items[$id] = $item;
}
/**
* 修改购物车中的商品数量
* @param $id 商品主键
* @param int $num 某个商品修改后的数量,即直接把某商品的数量改为$num
* @return boolean
*/
public function modnum($id,$num=1){
if(!$this->hasitem($id)){
return false;
}
$this->items[$id]['num'] = $num;
}
/**
* 商品数量增加1
* @param $id int 商品主键
* @param $num int
*/
public function incnum($id,$num=1){
if($this->hasitem($id)){
$this->items[$id]['num'] +=$num;
}
}
/**
* 商品数量增加1
* @param $id 商品主键
* @param $num
*/
public function decnum($id,$num=1){
if($this->hasitem($id)){
$this->items[$id]['num'] -=$num;
}
//如果减少后,数量为0了,则把这个商品从购物车删掉
if($this->items[$id]['num'] $this->delitem($id);
}
}
/**
*删除商品
* @param $id
*/
public function delitem($id){
unset($this->items[$id]);
}
/**
* 判断商品是否存在
* @param $id 商品主键
* @return bool
*/
public function hasitem($id){
return array_key_exists($id,$this->items);
}
/**
* 商品种类
* @return int
*/
public function getcnt(){
return count($this->items);
}
/**
* 查询购物车中商品的个数
* @return int
*/
public function getnum(){
if($this->getcnt()==0){
return 0;
}
$sum=0;
foreach($this->items as $item){
$sum +=$item['num'];
}
return $sum;
}
/**
* 查询购物车中商品的总金额
* @return float|int
*/
public function getprice(){
if($this->getcnt()==0){
return 0;
}
$price=0.0;
foreach($this->items as $item){
$price +=$item['num'] * $item['price'];
}
return $price;
}
/**
* 返回购物车中的所有商品
*/
public function getall(){
return $this->items;
}
/**
* 清空购物车
*/
public function clear(){
$this->items = array();
}
}
//调用方法
$cart = carttool::getcart();
$cart->additem(1,'电脑',120,1);
$cart->additem(2,'手机',500,1);
$cart->additem(3,'平板',900,1);
print_r($cart->getall());
?>
ad:真正免费,域名+虚机+企业邮箱=0元