php session 購物車類

<?php
class Cart{
	public function Cart() {
		if(!isset($_SESSION['cart'])){
			$_SESSION['cart'] = array();
		}
	}

	/*
	添加商品
	param int $id 商品主鍵
		  string $name 商品名稱
		  float $price 商品價格
		  int $num 購物數量
	*/
	public  function addItem($id,$name,$price,$num,$img) {
		//如果該商品已存在則直接加其數量
		if (isset($_SESSION['cart'][$id])) {
			$this->incNum($id,$num);
			return;
		}
		$item = array();
		$item['id'] = $id;
		$item['name'] = $name;
		$item['price'] = $price;
		$item['num'] = $num;
		$item['img'] = $img;
		$_SESSION['cart'][$id] = $item;
	}

	/*
	修改購物車中的商品數量
	int $id 商品主鍵
	int $num 某商品修改後的數量,即直接把某商品
	的數量改爲$num
	*/
	public function modNum($id,$num=1) {
		if (!isset($_SESSION['cart'][$id])) {
			return false;
		}
		$_SESSION['cart'][$id]['num'] = $num;
	}

	/*
	商品數量+1
	*/
	public function incNum($id,$num=1) {
		if (isset($_SESSION['cart'][$id])) {
			$_SESSION['cart'][$id]['num'] += $num;
		}
	}

	/*
	商品數量-1
	*/
	public function decNum($id,$num=1) {
		if (isset($_SESSION['cart'][$id])) {
			$_SESSION['cart'][$id]['num'] -= $num;
		}

		//如果減少後,數量爲0,則把這個商品刪掉
		if ($_SESSION['cart'][$id]['num'] <1) {
			$this->delItem($id);
		}
	}

	/*
	刪除商品
	*/
	public function delItem($id) {
		unset($_SESSION['cart'][$id]);
	}
	
	/*
	獲取單個商品
	*/
	public function getItem($id) {
		return $_SESSION['cart'][$id];
	}

	/*
	查詢購物車中商品的種類
	*/
	public function getCnt() {
		return count($_SESSION['cart']);
	}
	
	/*
	查詢購物車中商品的個數
	*/
	public function getNum(){
		if ($this->getCnt() == 0) {
			//種數爲0,個數也爲0
			return 0;
		}

		$sum = 0;
		$data = $_SESSION['cart'];
		foreach ($data as $item) {
			$sum += $item['num'];
		}
		return $sum;
	}

	/*
	購物車中商品的總金額
	*/
	public function getPrice() {
		//數量爲0,價錢爲0
		if ($this->getCnt() == 0) {
			return 0;
		}
		$price = 0.00;
		foreach ($this->items as $item) {
			$price += $item['num'] * $item['price'];
		}
		return sprintf("%01.2f", $price);
	}

	/*
	清空購物車
	*/
	public function clear() {
		$_SESSION['cart'] = array();
	}
}
發佈了11 篇原創文章 · 獲贊 3 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章