<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<?php
class Cart
{
protected static $ins;
// 实例变量
protected $item = array();
// 放商品容器
// 禁止外部调用
final protected function __construct()
{}
// 禁止克隆
final protected function __clone()
{}
// 类内部实例化
static protected function Getins()
{
if (! (self::$ins instanceof self)) {
self::$ins = new self();
}
return self::$ins;
}
// 为了能使商品跨页面保存,把对象放入session里
public static function Getcat()
{
if (! (@$_SESSION['cat']) || ! (@$_SESSION['cat'] instanceof self)) {
@$_SESSION['cat'] = self::Getins();
}
return $_SESSION['cat'];
}
// 入列时的检验,是否在$item里存在.
public function Initem($goods_id)
{
if ($this->Gettype() == 0) {
return false;
}
if (! (array_key_exists($goods_id, $this->item))) {
return false;
} else {
return $this->item[$goods_id]['num']; // 返回此商品个数
}
}
// 添加一个商品
public function Additem($goods_id, $name, $num, $price)
{
if ($this->Initem($goods_id) != false) {
$this->item[$goods_id]['num'] += $num;
return;
}
$this->item[$goods_id] = array(); // 一个商品为一个数组
$this->item[$goods_id]['num'] = $num; // 这一个商品的购买数量
$this->item[$goods_id]['name'] = $name; // 商品名字
$this->item[$goods_id]['price'] = $price; // 商品单价
}
// 减少一个商品
public function Reduceitem($goods_id, $num)
{
if ($this->Initem($goods_id) == false) {
return;
}
if ($num > $this->Getunm($goods_id)) {
unset($this->item[$goods_id]);
} else {
$this->item[$goods_id]['num'] -= $num;
}
}
// 去掉一个商品
public function Delitem($goods_id)
{
if ($this->Initem($goods_id)) {
unset($this->item[$goods_id]);
}
}
// 返回购买商品列表
public function Itemlist()
{
return $this->item;
}
// 一共有多少种商品
public function Gettype()
{
return count($this->item);
}
// 获得一种商品的总个数
public function Getunm($goods_id)
{
return $this->item[$goods_id]['num'];
}
// 查询购物车中有多少个商品
public function Getnumber()
{
$num = 0;
if ($this->Gettype() == 0) {
return 0;
}
foreach ($this->item as $k => $v) {
$num += $v['num'];
}
return $num;
}
// 计算总价格
public function Getprice()
{
$price = 0;
if ($this->Gettype() == 0) {
return 0;
}
foreach ($this->item as $k => $v) {
$price += $v['num'] * $v['price'];
}
return $price;
}
// 清空购物车
public function Emptyitem()
{
$this->item = array();
}
}
//测试
$cart = Cart::Getcat();
$cart->Additem('1', '手机', 31, 1);
$cart->Additem('2', '电源', 21, 1);
$cart->Additem('3', '显示器', 11, 10);
echo "<pre>";
print_r($cart);
$cart->Reduceitem(2,10);
print_r($cart);
echo "总价:".$cart->Getprice()."<br>";
echo "数量:".$cart->Getnumber();
?>
初步实现购物车功能,备用