<?php /** * @version $Id$ * @create 2013-1-27 21:47:50 By xjiujiu * @description HongJuZi Framework * @copyRight Copyright (c) 2011-2012 http://www.xjiujiu.com.All right reserved */ @header('Content-Type: text/html, charset=utf-8;'); //开启session @session_start(); include_once('./hongjuzi/hhcart.php'); //php 按行执行这里根据传来的action参数去调用其中的方法。 //其实柑橘在java中也是一样的. //在servlet中不也是通过指定方法才去调用doget和dopost方法么。 //只不过这个是在method中指定的。 //如果要调用其他方法,也要自己去实例化的。 //而在struts2中,应该是用!去分割的。 $ac = $_GET['ac']; $cart = new HHCart(); switch($ac) { case 'list': try{ $list = $cart->getList(); foreach($list as $key => $value){ $num = $list[$key]['total']; $obj = $list[$key]['info']; //stripslashes(String)去除斜杠 $price = stripslashes($obj['price']); $count += intval($num * intval($price)); } //echo json_encode(array('list' => $cart->getList())); //建立数组,并复制给$orderList引用.期中list应该是一个对象数组。 $orderList = array('list' => $cart->getList(),'count'=>$count); //array_push($orderList); //转为json格式 echo json_encode($orderList); }catch(Exception $ex){ echo "失败"; } break; case 'add': { try { //接受数据,并存为个一个数组。 $productInfo = array( 'id' => $_POST['productId'], 'name' => $_POST['productName'], 'price' => $_POST['price'], 'type' => $_POST['productType'] ); //打印调试 var_dump($productInfo); $cart->add($productInfo); echo json_encode(array('succeed' => true)); } catch(Exception $ex) { echo json_encode(array( 'succeed' => 'false', 'info' => '貨物添加失敗!' )); } break; } case 'sub': break; case 'destroy': break; default: break; } ?>
HHcart类
<?php /** * @version $Id$ * @create 2013-1-27 21:47:50 By xjiujiu * @description HongJuZi Framework * @copyRight Copyright (c) 2011-2012 http://www.xjiujiu.com.All right reserved */ /** * 購物車類 * * @desc * * @author xjiujiu <xjiujiu@foxmail.com> * @package None * @since 1.0.0 */ class HHCart { /** * @var Map $_cart 購物車容器 */ protected $_cart; /** * @var String $_cartId 當前的購物車ID */ protected $_cartId; /** * @var String $_priceParam 單價名稱 */ protected $_priceParam; /** * @var int $_productIdParamName 當前的產品ID變量名 */ protected $_productIdParamName; /** * @var Mix $_productId 當前的產品ID */ protected $_productId; /** * 構造函數 * * @desc * * @author xjiujiu <xjiujiu@foxmail.com> * @access public * @param String $price 當前的價格變量名稱,默認:price * @param String $productIdParamName 產品編號變量 */ public function __construct($price = 'price', $productIdParamName = 'id') { $this->_getCurCart(); $this->_cartId = session_id(); $this->_productInfo = null; $this->_priceParam = $price; $this->_productIdParamName = $productIdParamName; } /** * 得到當前的購物車容器 * * @desc * * @author xjiujiu <xjiujiu@foxmail.com> * @access protected */ protected function _getCurCart() { if(!isset($_SESSION['HHCART']) || !is_array($_SESSION['HHCART'])) { $_SESSION['HHCART'] = array(); } $this->_cart = &$_SESSION['HHCART']; } /** * 添加貨物 * * @desc * * @author xjiujiu <xjiujiu@foxmail.com> * @access public */ public function add($productInfo) { $productId = $productInfo[$this->_productIdParamName]; if(!isset($this->_cart[$this->_cartId])) { $this->_cart[$this->_cartId] = array(); } if(isset($this->_cart[$this->_cartId][$productId])) { $this->_cart[$this->_cartId][$productId]['total'] ++; } else { $this->_cart[$this->_cartId][$productId]['total'] = 1; $this->_cart[$this->_cartId][$productId]['info'] = $productInfo; } } /** * 減少貨物 * * @desc * * @author xjiujiu <xjiujiu@foxmail.com> * @access public * @return void * @throws none */ public function sub($productId) { if(isset($this->_cart[$this->_cartId])) { if(isset($this->_cart[$this->_cartId][$productId])) { if(1 != $this->_cart[$this->_cartId][$productId]['total']) { $this->_cart[$this->_cartId][$productId]['total'] -= 1; } else { unset($this->_cart[$this->_cartId][$productId]['total']); } } } } /** * 清除貨物 * * @desc * * @author xjiujiu <xjiujiu@foxmail.com> * @access public * @return void * @throws none */ public function delete($productId) { if(isset($this->_cart[$this->_cartId])) { if(isset($this->_cart[$this->_cartId][$productId])) { unset($this->_cart[$this->_cartId][$productId]); } } } /** * 更新購物車 * * @desc * * @author xjiujiu <xjiujiu@foxmail.com> * @access public * @return List 得到當前購物車里的內容 */ public function getList() { return $this->_cart[$this->_cartId]; } /** * 清空 * * @desc * * @author xjiujiu <xjiujiu@foxmail.com> * @access public * @return void * @throws none */ public function destroy() { unset($this->_cart[$this->_cartId]); } /** * 結賬 * * @desc * * @author xjiujiu <xjiujiu@foxmail.com> * @access public */ public function count() { $total = 0; foreach($this->_cart[$this->_cartId] as $product) { $total += intval($product['total']) * intval($product['info'][$this->_priceParam]); } return $total; } } ?>