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开发中, 难免 ...
随机推荐
- JS中 reduce() 的用法
过去有很长一段时间,我一直很难理解 reduce() 这个方法的具体用法,平时也很少用到它.事实上,如果你能真正了解它的话,其实在很多地方我们都可以用得上,那么今天我们就来简单聊聊JS中 reduce ...
- curl命令,curl实现post,curl监控网页shell脚本,curl多进程实现并控制进程数,
cURL > Docs > Tutorial: http://curl.haxx.se/docs/httpscripting.html 下载单个文件,默认将输出打印到标准输出中(STDO ...
- docker 环境搭建步骤
配置CA: zhaoweipeng@bogon:~$ ls106 baseos.tar fabric-sdk fabric-sdk (1).tar fixture_106zhaoweipeng@bog ...
- AdaBoost笔记之原理
转自:https://www.cnblogs.com/ScorpioLu/p/8295990.html 一.Boosting提升算法 AdaBoost是典型的Boosting算法,属于Boosting ...
- [转] 如何在vps上安装和登录Xwindows
如何VPS也可以拥有像windows一样图形窗口,这里写个教程,据说xwindows是一个比微软windows还强大的linux图形界面,怎样强大,我也是听说的,你可以自己去试,然后告诉我. vps安 ...
- 拾遗:Perl 基础语法
Perl 常用的命令行参数 -i:将处理结果直接写入文件,可以通过 -i.bak 或 -i"/tmp/orig_*" 等形式,在修改之前进行备份 -e:启用 perl 的命令行模式 ...
- jpa现有接口方法说明 (转https://www.cnblogs.com/rulian/p/6557471.html)
一.接口方法整理速查 下表针对于简单查询,即JpaRepository接口(继承了CrudRepository接口.PagingAndSortingRepository接口)中的可访问方法进行整理.( ...
- Two-phase Termination 把玩具收拾好再去睡觉。
字面翻译是“两阶段终止”,这个模式用来进行结束操作后,再终止线程.比如我们想停止一个线程,但是让他停止之前必须要做一些清理工作,这时候就需要用到two-phase termination模式. pub ...
- mysql sql的分类、运算符、常用的数据类型
SQL (结构化查询语言)的分类 DML(数据操作语言),关键字 insert,update,delete, DCL(数据控制语言),控制权限,grand,revoke 授权,回收 DDL(数据定义语 ...
- 【JDK】:java.lang.Integer源码解析
本文对JDK8中的java.lang.Integer包装类的部分数值缓存技术.valueOf().stringSize().toString().getChars().parseInt()等进行简要分 ...