在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. CodeForces - 296A-Yaroslav and Permutations(思维)

    Yaroslav has an array that consists of n integers. In one second Yaroslav can swap two neighboring a ...

  2. REST API -- 缓存和并发

    REST API -- 缓存和并发 https://www.cnblogs.com/cgzl/p/9165388.html 本文所需的一些预备知识可以看这里: http://www.cnblogs.c ...

  3. es6新语法系列,查找字符串,模板字符串

    一.模板字符串: ES6引入了一种新型的字符串字面量语法,我们称之为模板字符串(template strings).除了使用反撇号字符 ` 代替普通字符串的引号 ' 或 " 外,它们看起来与 ...

  4. 《java学习三》jvm性能优化-------调优

    常见参数配置 -XX:+PrintGC      每次触发GC的时候打印相关日志 -XX:+UseSerialGC      串行回收 -XX:+PrintGCDetails  更详细的GC日志 -X ...

  5. 开源分布式Job系统,调度与业务分离-如何创建周期性的HttpJob任务

    项目介绍: Hangfire:是一个开源的job调度系统,支持分布式JOB!! Hangfire.HttpJob 是我针对Hangfire开发的一个组件,该组件和Hangfire本身是独立的.可以独立 ...

  6. Linux常用操作详解

    第1章 Linux命令基础 1.1 习惯 操作前备份,操作后检查 1.2 简单目录结构 一切从根开始,与windows不同 1.3 规则 [root@znix ~]# [用户名@主机名 你在哪]# 1 ...

  7. 零基础逆向工程21_PE结构05_数据目录表_导出表

    数据目录 1.我们所了解的PE分为头和节,在每个节中,都包含了我们写的一些代码和数据,但还有一些非常重要 的信息是编译器替我们加到PE文件中的,这些信息可能存在在任何可以利用的地方. 2.这些信息之所 ...

  8. 零基础逆向工程17_PE结构01_PE头解析_手动

    PE文件的两种状态 1.在硬盘中 节省硬盘空间 硬盘对齐 内存对齐 2.在内存中 3.PE磁盘文件与内存映像结构图 PE文件为什么要分节 -- 手动解析:PE文件 分析软件:飞鸽传书http://ww ...

  9. 织梦后台上传mp4视频不显示

    include/dialog/select_media.php ,约185行, 把(rm|rmvb) 改为(rm|mp4|rmvb)

  10. SqlServer中提示和报错信息的翻译

    有时候遇到SqlServer一些报错需要上网查找解决方法,一些比较生僻的问题汉语搜索往往得不到想要的,就要使用英文在外网搜索.之前都是自己尝试翻译,或者使用错误码,或者找个英文版的数据库重现问题.有时 ...