TP5框架封装购物车类

Posted mmore123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TP5框架封装购物车类相关的知识,希望对你有一定的参考价值。


<?php

namespace HomeTool;


abstract class ACartTool{
/**
* 向购物车中添加1个商品
* @param $goods_id int 商品id
* @param $goods_name String 商品名
* @param $shop_price float 价格
* @return boolean
*/
abstract public function add($goods_id,$goods_name,$shop_price);
/**
* 减少购物车中1个商品数量,如果减少到0,则从购物车删除该商品
* @param $goods_id int 商品id
*/
abstract public function decr($goods_id);
/**
* 从购物车删除某商品
* @param $goods_id 商品id
*/
abstract public function del($goods_id);
/**
* 列出购物车所有的商品
* @return Array
*/
abstract public function items();
/**
* 返回购物车有几种商品
* @return int
*/
abstract public function calcType();
/**
* 返回购物车中商品的个数
* @return int
*/
abstract public function calcCnt();
/**
* 返回购物车中商品的总价格
* @return float
*/
abstract public function calcMoney();
/**
* 清空购物车* @return void
*/
abstract public function clear();

}






class CarTool extends ACartTool{
public $item = array();
public static $ins = null;

public static function getIns(){
if(self::$ins === null){
self::$ins = new self();
}
return self::$ins;

}


//防止外部new
final protected function __construct(){
$this->item = session(‘cart‘);
}
/**
* 向购物车中添加1个商品
* @param $goods_id int 商品id
* @param $goods_name String 商品名
* @param $shop_price float 价格
* @return boolean
*/
public function add($goods_id,$goods_name,$shop_price){
if(isset($this->item[$goods_id])){
$this->item[$goods_id][‘num‘] += 1;
} else {
$goods = array(‘goods_id‘=>$goods_id,‘goods_name‘=>$goods_name,‘shop_price‘=>$shop_price,‘num‘=>1);
$this->item[$goods_id] = $goods;
}
}
/**
* 减少购物车中1个商品数量,如果减少到0,则从购物车删除该商品
* @param $goods_id int 商品id
*/
public function decr($goods_id){
if(isset($this->item[$goods_id])){
$this->item[$goods_id][‘num‘] -= 1;
}
if($this->item[$goods_id][‘num‘] <= 0){
$this->del($goods_id);
}
}
/**
* 从购物车删除某商品
* @param $goods_id 商品id
*/
public function del($goods_id){
unset($this->item[$goods_id]);
}
/**
* 列出购物车所有的商品
* @return Array
*/
public function items(){
return $this->item;
}
/**
* 返回购物车有几种商品
* @return int
*/
public function calcType(){
return count($this->item);
}
/**
* 返回购物车中商品的个数
* @return int
*/
public function calcCnt(){
$cnt = 0;
foreach($this->item as $v){
$cnt += $v[‘num‘];
}
return $cnt;
}
/**
* 返回购物车中商品的总价格
* @return float
*/
public function calcMoney(){
$money = 0;
foreach($this->item as $v){
$money += $v[‘num‘] * $v[‘shop_price‘];
}
return $money;
}
/**
* 清空购物车* @return void
*/
public function clear(){
return $this->item = array();
}

//用session吧$item值存储起来
public function __destruct(){
session(‘cart‘,$this->item);
}
}

————————————————
版权声明:本文为CSDN博主「佐住地球转」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010506564/article/details/78375869

以上是关于TP5框架封装购物车类的主要内容,如果未能解决你的问题,请参考以下文章

swoole 的tp5 command终端命令 封装

tp5封装 phpexecl引入和调用类的封装以及调用

php自己封装一个Db类,跟tp5封装的类一模一样

基于TP5.1实用案例及教程

TP5单文件多文件上传

Python+Selenium框架设计篇之4-框架内封装基类和实现POM