ThinkPHP引用第三方库
Thinkphp引用第三方库的方法例如引用购物车:在项目Home目录下,新建一个文件夹(以下是我自己的demo)
Tool文件夹,在Tool文件夹中创建Tool.class.php文件。这个和你控制器或者模型的创建是一致的。
<?php
namespace Home\Tool;
abstract class ACarTool{
//向购物车添加一个商品
abstract public function add($goods_id,$goods_name,$shop_price); //向购物车减少一个商品的数量,如果为0则删除
abstract public function decr($goods_id); //从购物车删除某商品
abstract public function del($goods_id); //列出购物车的所有东西
abstract public function items(); //返回购物车中有几种商品
abstract public function calcType(); //返回购物车中商品的个数
abstract public function calcCnt(); //返回购物车商品的总价格
abstract public function calcMoney(); //清空购物车
abstract public function clear();
} class AddTool extends ACarTool{ //声明一个属性
public $item = array();
//单例模式
public static $ins = null;
public static function getIns(){
if(self::$ins == null){
self::$ins = new self();
}
return self::$ins;
} final protected function __construct(){
//session('?kache')检测是否存在session
$this->item = session('?kache') ? session('kache') : array();
}
//向购物车添加一个商品
public function add($goods_id,$goods_name,$shop_price){ if($this->item[$goods_id]){
$this->item[$goods_id]['num'] += 1;
}else{
$goods['goods_name'] = $goods_name;
$goods['shop_price'] = $shop_price;
$goods['num'] = 1; $this->item[$goods_id] = $goods;
} } //减少购物车一个商品的数量,如果到0则删除此商品
public function decr($goods_id){ if($this->item[$goods_id]){
$this->item[$goods_id]['num'] -= 1;
}
if($this->item[$goods_id]['num'] <=0){
$this->del($goods_id);
}
} //从购物车删除某商品
public function del($goods_id){
unset($this->item[$goods_id]);
} //列出购物车所有的商品
public function items(){
return $this->item;
} //返回购物车有几种物品
public function calcType(){
return count($this->item);
} //返回购物车商品的个数
public function calcCnt(){
$n = 0;
foreach ($this->item as $k => $v) {
$n +=$v['num'];
}
return $n;
} //返回购物车的总价格
public function calcMoney(){ $n = 0;
foreach ($this->item as $k => $v) {
$n += $v['num'] * $v['shop_price'];
}
return $n;
} //清空购物车
public function clear(){ $this->item = array();
} public function __destruct(){
session('kache',$this->item);
}
}
创建好购物车需要的类后。在需要的控制器下定义一个方法,引入第三方类库
$tool = \Home\Tool\AddTool::getIns();
ThinkPHP引用第三方库的更多相关文章
- VS中引用第三方库的方法(配置sqlite数据库)
我们在编写程序时,,不可避免的会使用第三方的库文件,很少使用源文件(.cpp),大部分是使用对类进行声明的头文件和封装了类的链接库(静态lib或动态dll),比如我们写程序用的iostream这个库, ...
- 【Android Studio安装部署系列】十七、Android studio引用第三方库、jar、so、arr文件
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 在Android开发过程,经常需要用到第三方库以及jar.so.arr文件,那么如何引用到项目中呢?下面简单介绍下. 引用第三方库 ...
- VC中引用第三方库,常见的库冲突问题
Q:VC中引用第三方库,常见的库冲突问题 环境:[1]VS2008 [2]WinXP SP3 A1(方法一): [S1]第三方库(Binary形式的)如果同主程序冲突,则下载第三方库的源码[S2]保持 ...
- Flutter如何引用第三方库并使用
Flutter如何引用第三方库并使用 https://www.jianshu.com/p/bbda7794345e Flutter官网点击访问Flutter教程(一)Flutter概览Flutter教 ...
- pod引用第三方库的几种方式
pod引用库的原理,本质上是去找.podspec文件,podspec中包含库的地址及最新的版本号(tag标签),如果pod时没有指定版本,则pod install时会去下载podspec文件中指定的最 ...
- Angular-Cli中引用第三方库
最近在学习angular(AngularJS 2),根据教程使用angular-cli新建项目, 然而在添加JQuery和Bootstrap第三方库时遇到了问题... 初试 我最初的想法是直接将相对路 ...
- Laravel composer自定义命令空间,方便引用第三方库
第一步:自定义目录 在app文件夹下新建Library目录,做为第三方库的目录 第二步: 修改composer.json文件 autoload节点下的psr-4自定义命名空间 规则: key: 命名空 ...
- WPF 引用第三方库的控件在设计器加上设计时数据和属性
本文告诉大家如何在 VisualStudio 2022 的 XAML 设计器中,在设计时给第三方控件加上设计用的属性和数据的方法 此功能要求使用不低于 VisualStudio 2019 的 16.8 ...
- iOS开发 引用第三方库出现duplicate symbol时的处理方法
该篇文章是我自己从我的新浪博客上摘抄过来的, 原文链接为: http://blog.sina.com.cn/s/blog_dcc636350102wat5.html 在iOS开发中, 难免 ...
随机推荐
- P1831 杠杆数
P1831 杠杆数 题目描述 如果把一个数的某一位当成支点,且左边的数字到这个点的力矩和等于右边的数字到这个点的力矩和,那么这个数就可以被叫成杠杆数. 比如4139就是杠杆数,把3当成支点,我们有这样 ...
- python入门 集合(四)
集合 集合是一个无序的不重复元素序列,可以迭代,也可以修改.集合迭代的时候元素是随机的. 集合通常用来 membership testing, 去重, 也可以用来求交集并集补集. 介绍一下如何创建集合 ...
- python入门 元组tuple (三)
什么if while语句了 列表字典都太简单了 ,我直接跳过了, 开始写tuple了 增 元组格式是写在括号里,注意与列表(写在中括号里)的区别 tup1 = ('math', 'beijing', ...
- CocoaPods更新2018年11月06日16:06:48
https://gems.ruby-china.org点进去就知道了…… CocoaPods命令 更新 sudo gem install -n /usr/local/bin cocoapods --p ...
- 剑指offer——35二叉树的后序遍历
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 题解: 这道题,一开始以为将后序遍历排序后的得 ...
- 剑指offer——25合并两个排序的链表
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 题解: 使用普通方法,或者递归,注意新的头节点即可. //使用普通的合并方法 class S ...
- Java中哪个JSON库的解析速度是最快的?
JSON已经成为当前服务器与WEB应用之间数据传输的公认标准,不过正如许多我们所习以为常的事情一样,你会觉得这是理所当然的便不再深入思考 了.我们很少会去想用到的这些JSON库到底有什么不同,但事实上 ...
- Activiti学习笔记10 — 动态任务分配
动态任务分配使用的两种方式 一.通过特殊表达式,来获取任务信息 ,在流程 UserTask节点上设置 ${流程变量的Key} 1.流程定义 <?xml version="1.0&quo ...
- std::unorder_set你插入元素的顺序不一定就是元素在里面的元素
去看了下cppreference,里面写了 根据哈希值排序了
- iOS开发系列-定时器强引用问题
概述 iOS开发中常用的定时器NSTimer.CADisplayLink. NSTimer 和 CADisplayLink 基本使用 NSTimer的创建方法有两个scheduledTimerWith ...