采用单例模式写的购物车
session_start();
/**
*单例模式购物车(SESSION购物车)
*/
class CartTool{
private static $ins = null;
private $items = array();
public $rand = 0;
protected function __construct(){
header("Content-type: text/html; charset=utf-8");
$this->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元

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ホットトピック



