在tp5中使用外部类的时候有三种方法

第一种就是通过composer下载,通过这种方式下载的外部类能够支持自动加载,我们只要在使用的时候use一下命名空间就可以使用了

比如:我们的tp5第四季项目要使用到邮件发送类PHPMailer,这个类我们可以通过composer下载到当前项目,默认会下载到vendor目录

在使用的时候只需在程序文件的开头:use PHPMailer\PHPMailer\PHPMailer;即可使用

第二种方法就是一些我们自己写的类或者是网上搜的类库文件,从composer上面下载不到的,那么我们可以放到extend文件夹中,因为extends中的文件在tp5的结构体系内部,所以要考虑命名空间的问题,这样在调用的时候才能正常使用,比如我们的tp5第四季开发的大型商城项目中,我们将无限极分类文件放到了extend文件夹中,那么就要为这些文件加上命名空间。

如我们的无限极分类类文件放到了extend文件夹下catetree自建的文件夹中,那么该类文件的命名空间就要设置为:namespace catetree;

接着在控制器中使用该类文件的时候我们也要use引入:use catetree\Catetree(类文件的名称);

那么第三种方法就是直接将外部类放到我们项目的跟目录下,比如tp5第四季我们在集成支付宝支付和微信支付的时候,不想考虑太多命名空间的问题就在根路径下创建了一个文件夹pay

之后又在内部创建了两个文件夹alipay和wxpay分别用来存放支付宝和微信的接口文件,但是虽然我们通过这种简单粗暴的方法引入了,但是在使用的时候对于一些新手可能就比较麻烦了,尤其是对命名空间机制不是很熟悉的学员,通常会在控制器中使用的时候提示加载不到类,下面我们以微信支付为例解决一下:

其实就是两个小问题,第一将文件按照正确的路径引入到项目

为了解决这个问题,我们先在index.php入口文件中定义了一个路径常量

define(‘PAY_PLUS’, DIR . ‘/application/../’);

接着在需要微信支付的控制器的方法内部引入微信支付接口文件:

    //微信支付
if($orderInfo['payment']==2 && $orderInfo['pay_status']==0){
$payPlus = PAY_PLUS.'./pay/wxpay/';
include($payPlus.'index2.php');
$obj = new \WeiXinPay2();
$qrurl = $obj->getQrUrl('1118'); //2.生成二维码
\QRcode::png($qrurl);
}

如上代码,我们又对入口文件中的路径进行了二次组装,这个是因为我们在微信的其他没有被直接引入到项目中的文件中也要使用该路径,所以定义成为了一个变量:$payPlus

还有第二点要注意的:我们在控制器的方法中如果需要实例化外部引入的类,一定要在类名前面加:\表示跟命名空间即可,如果你是新手没看太懂,那就看看我们的视频教程吧

tp5使用外部类的三种方法的更多相关文章

  1. day42——外键的限制和解决方法、外键的三种约束模式、修改表(单表查询)

    day42 外键的限制和解决方法 可以添加外键关联的那个字段可以是 被唯一(unique)约束的字段 或者 主键 限制:+ 由于外键的使用,致使多个表之间产生了联系,当我们对这些表进行更新或删除操作的 ...

  2. Android监听点击事件实现的三种方法

    监听点击事件实现的三种方法:1.匿名内部类2.外部类3.直接实现接口 1.匿名内部类: package com.jereh.calculator; import android.content.Con ...

  3. 利用Objective-C运行时hook函数的三种方法

    版权声明:转载请注明出处:http://blog.csdn.net/hursing 方法一,hook已有公开头文件的类: 首先写一个Utility函数: #import <objc/runtim ...

  4. linux动态库默认搜索路径设置的三种方法

    众所周知, Linux 动态库的默认搜索路径是 /lib 和 /usr/lib .动态库被创建后,一般都复制到这两个目录中.当程序执行时需要某动态库, 并且该动态库还未加载到内存中,则系统会自动到这两 ...

  5. CSS让图片垂直居中的几种技巧 三种方法介绍

    在网页设计过程中,有时候会希望图片垂直居中的情况.而且,需要垂直居中的图片的高度也不确定,这就会给页面的布局带来一定的挑战.下面总结了一下,曾经使用过的几种方法来使图片垂直居中,除了第一种方法只限于标 ...

  6. RedHat 7.0及CentOS 7.0禁止Ping的三种方法

    作者:荒原之梦 原文链接:http://zhaokaifeng.com/?p=538 前言: "Ping"属于ICMP协议(即"Internet控制报文协议") ...

  7. (转)Java结束线程的三种方法

    背景:面试过程中问到结束线程的方法和线程池shutdown shutdownnow区别以及底层的实现,当时答的并不好. Java结束线程的三种方法 线程属于一次性消耗品,在执行完run()方法之后线程 ...

  8. Ubuntu下三种方法设置环境变量

    一种用于当前终端,一种用于当前用户,一种用于所有用户: 用于当前终端: 在当前终端中输入:export PATH=$PATH:<你的要加入的路径> 不过上面的方法只适用于当前终端,一旦当前 ...

  9. MySQL提供了以下三种方法用于获取数据库对象的元数据

    MySQL提供了以下三种方法用于获取数据库对象的元数据: 1)show语句 2)从INFORMATION_SCHEMA数据库里查询相关表 3)命令行程序,如mysqlshow, mysqldump 用 ...

随机推荐

  1. JQuery扩展和事件

    一.jQuery事件 常用事件 blur([[data],fn]) 失去焦点 focus([[data],fn]) 获取焦点( 搜索框例子) change([[data],fn]) 当select下拉 ...

  2. Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises) B

    Maxim wants to buy an apartment in a new house at Line Avenue of Metropolis. The house has n apartme ...

  3. 服务是如何加载并运行的, Kestrel、配置与环境

    服务是如何加载并运行的, Kestrel.配置与环境 "跨平台"后的ASP.Net Core是如何接收并处理请求的呢? 它的运行和处理机制和之前有什么不同? 本章从"宏观 ...

  4. Zeppelin的入门使用系列之使用Zeppelin来运行Spark SQL(四)

    不多说,直接上干货! 前期博客 Zeppelin的入门使用系列之使用Zeppelin来创建临时表UserTable(三) 1. 运行年龄统计的Spark SQL (1)  输入Spark SQL时,必 ...

  5. opencv 形态学膨胀和腐蚀以及开运算和闭运算

  6. 点权生成树(gentree)

    点权生成树(gentree) 题目背景 Awson是某国际学校信竞组的一只菜鸡.终于弄明白边权最小生成树后,然而又被大神嘲笑了.大神深邃的眼光中透露了些睿智,说道:“你会求点权最小生成树么?”Awso ...

  7. 死磕 java并发包之LongAdder源码分析

    问题 (1)java8中为什么要新增LongAdder? (2)LongAdder的实现方式? (3)LongAdder与AtomicLong的对比? 简介 LongAdder是java8中新增的原子 ...

  8. columns分栏与flex弹性盒模型

    columns  分栏 值:column-width:设置每列的宽度        column-count:设置列数   例:columns{200px 3}   列数和宽度固定        co ...

  9. Class 学习 (Es6阮一峰)

    es5 构造函数 实例: function Point(x, y) { this.x = x; this.y = y; } Point.prototype.toString = function () ...

  10. Linux下常用的数据恢复工具

    一.数据删除 命令:rm -rf,将任何数据直接从硬盘删除,且没有任何提示 建议做法: 把命令参数放到后面:rm -rfi 将删除的东西通过mv命令移动到系统下的/temp目录下,然后写个脚 本定期执 ...