在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. Jmeter4.0----响应断言(6)

    1.说明 一个HTTP请求发出去,怎么判断执行的任务是否成功呢?通过检查服务器响应数据,是否返回预期想要的数据,如果是,判断任务成功,反之任务失败. 作用:判断请求是否成功 2.步骤 第一步:添加 “ ...

  2. Maven--setting详解

    settings.xml有什么用? 如果在Eclipse中使用过Maven插件,想必会有这个经验:配置settings.xml文件的路径. settings.xml文件是干什么的,为什么要配置它呢? ...

  3. LindAgile~缓存拦截器支持类的虚方法了

    写它的原因 之前写过一个缓存拦截器,主要在方法上添加CachingAspect特性之后,它的返回值就可以被缓存下来,下次访问时直接从缓存中返回结果,而它有一个前提,就是你的方法需要是一个接口方法,缓存 ...

  4. springboot在lunix后台启动,退出账号也不关闭

    首先需要进到自己springboot项目的根目录,然后执行如下linux命令 nohup java -jar 自己的springboot项目.jar >日志文件名.log 2>&1 ...

  5. I/O操做总结(二)

    文件的操作 这一节我们来讨论关于文件自身的操作 不浪费唾沫了,用代码说话…… 实例1:创建文件对象 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...

  6. Redhat/CentOS 软件安装

    概述 软件包简介 rpm 包安装 yum 在线安装 源码包管理 软件包分类 源码包 二进制包(rpm包.系统默认包) rpm包安装 rpm包的依赖性 树形依赖: a -> b -> c 环 ...

  7. 两个页面实现mui轮播图与选项卡结合

    index.html页面 <!DOCTYPE html><html><head> <meta charset="utf-8"> &l ...

  8. 关于学习Lisp的一点思考

    以前读<黑客与画家>,其中对Lisp语言的赞美和推崇,让我燃起学习Lisp语言的强烈冲动,但很快发现在实际工作中应用的场景很少,出于功利心最终放弃了.直到上周未在家里读完了<大教堂与 ...

  9. Jquery ajax中表单提交被拦截的问题处理方法

    在实际开发项目中,由于要做支付宝的批量退款处理,需要用到ajax中去提交表单数据,项目截图如下: 由于在第二张截图“确认退款”那里需要异步ajax提交数据到服务器处理信息,处理成功后将返回的数据装载到 ...

  10. IOS 屏幕尺寸、分辨率、点之间的相互关系

    iOS 设备现有的分辨率如下:iPhone/iPod Touch普通屏                         320像素 x 480像素       iPhone 1.3G.3GS,iPod ...