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引用第三方库的更多相关文章

  1. VS中引用第三方库的方法(配置sqlite数据库)

    我们在编写程序时,,不可避免的会使用第三方的库文件,很少使用源文件(.cpp),大部分是使用对类进行声明的头文件和封装了类的链接库(静态lib或动态dll),比如我们写程序用的iostream这个库, ...

  2. 【Android Studio安装部署系列】十七、Android studio引用第三方库、jar、so、arr文件

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 在Android开发过程,经常需要用到第三方库以及jar.so.arr文件,那么如何引用到项目中呢?下面简单介绍下. 引用第三方库 ...

  3. VC中引用第三方库,常见的库冲突问题

    Q:VC中引用第三方库,常见的库冲突问题 环境:[1]VS2008 [2]WinXP SP3 A1(方法一): [S1]第三方库(Binary形式的)如果同主程序冲突,则下载第三方库的源码[S2]保持 ...

  4. Flutter如何引用第三方库并使用

    Flutter如何引用第三方库并使用 https://www.jianshu.com/p/bbda7794345e Flutter官网点击访问Flutter教程(一)Flutter概览Flutter教 ...

  5. pod引用第三方库的几种方式

    pod引用库的原理,本质上是去找.podspec文件,podspec中包含库的地址及最新的版本号(tag标签),如果pod时没有指定版本,则pod install时会去下载podspec文件中指定的最 ...

  6. Angular-Cli中引用第三方库

    最近在学习angular(AngularJS 2),根据教程使用angular-cli新建项目, 然而在添加JQuery和Bootstrap第三方库时遇到了问题... 初试 我最初的想法是直接将相对路 ...

  7. Laravel composer自定义命令空间,方便引用第三方库

    第一步:自定义目录 在app文件夹下新建Library目录,做为第三方库的目录 第二步: 修改composer.json文件 autoload节点下的psr-4自定义命名空间 规则: key: 命名空 ...

  8. WPF 引用第三方库的控件在设计器加上设计时数据和属性

    本文告诉大家如何在 VisualStudio 2022 的 XAML 设计器中,在设计时给第三方控件加上设计用的属性和数据的方法 此功能要求使用不低于 VisualStudio 2019 的 16.8 ...

  9. iOS开发 引用第三方库出现duplicate symbol时的处理方法

      该篇文章是我自己从我的新浪博客上摘抄过来的, 原文链接为: http://blog.sina.com.cn/s/blog_dcc636350102wat5.html     在iOS开发中, 难免 ...

随机推荐

  1. Wannafly挑战赛21-A-灯塔-内含正确的凸包模版

    (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 目录 目录 题意:传送门 思路: AC代码: 题意:传送门 题目描述 Z市是一座港口城市,来来往往的船只依靠灯塔指引方向. 在海平面上 ...

  2. vs2013代码高亮显示失效

    问题: 最近使用vs2013写代码的时候经常遇到一种问题,当我们的工程逐渐变大时,突然有一个文件出现以上问题,这并不是设置提示的问题,因为当你打开别的工程时该问题不会出现.这其实是配置缓存的问题,而V ...

  3. Unity shader之金属质感衣服

    一套QQ飞车的衣服,模仿其效果写的shader,效果如下: 部分shader如下: Shader "qq/Cloth" { Properties { _MainTex (" ...

  4. 剑指offer——11旋转数组中最小的数字

    题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转 ...

  5. 从数组中任意取出2个数,判断他们的和是否为输入的数字sum,时间复杂度为0(n^2),空间复杂度0(1)

    从数组中任意取出2个数,判断他们的和是否为输入的数字sum,时间复杂度为0(n^2),空间复杂度0(1) 假设数据已经是排序好的 #include <stdio.h> #include & ...

  6. 终于搭好了WinCE上MFC的SDK环境

    终于可以我的嵌入式之旅了,幸福啊...

  7. flask-Local源码流程解析

    flask中Local源码数据类型首先明确:源码中要构造的数据类型数是这样的: __storage__ = { 用线程或者协程的唯一标识为键: {stack:[ctx(session/request) ...

  8. NIO教程笔记

    NIO操作文件部分详解 NIO——New IO,也可以理解为非阻塞IO(Non Blocking IO).可以替代旧IO,更高效的支持读写(文件读写,网络读写).但文件操作都是阻塞的.学习NIO首先要 ...

  9. git 去除本地所有没有保存的修改

    git 去除本地所有没有保存的修改,参考How do I revert all local changes in Git managed project to previous state? 知道运行 ...

  10. Apache虚拟目录实现同一个IP绑定多个域名

    在前:我使用的是Xampp,所以路径可能不同 找到apache\conf\extra\httpd-vhosts.conf, 如果没有的话请自己新建httpd-vhosts.conf文件, 并且在htt ...