在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

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

最新文章

  1. 常用的数据统计Sql 总结
  2. ionic入门之色彩、图标、边距和界面组件:列表
  3. 安装vs2010,vs2015后,删除2015,导致vs2016打不开
  4. 数字信号处理实验(四)——数字滤波器结构
  5. IOS8Preview-Huge for developer and Massive for everyone else
  6. Maven初步搭建 (一)
  7. 跨平台的 SQL 客户端
  8. 常用jQuery代码03
  9. 基于cocos2d-x的游戏框架设计——李成
  10. 《University Calculus》-chape3-微分法-基本概念、定理
  11. nodejs学习笔记_nodejs和PHP在基础架构上的差别--共享状态的并发
  12. [ gczdac ] 20190213 开博客啦!
  13. restful api与传统api的区别(方式及语法)
  14. Java 必须掌握的 20+ 种 Spring 常用注解
  15. hdu 1166 (单点更新+区间求和+裸题)
  16. composer命令中 --prefer-dist 和 --prefer-source 的区别
  17. Python开发【模块】:aiohttp(二)
  18. 关于python无法显示中文的问题:SyntaxError: Non-ASCII character '\xe4' in file test.py on line 3, but no encoding declared。
  19. 2019.2.28&2019.3.1 考试
  20. linux网络编程IO模型

热门文章

  1. C++文件操作方法小结
  2. 一篇关于完全动态凸包的paper(侵删)
  3. Hive进阶_Hive数据的导入
  4. ms sqlserver 登录失败 错误:4064
  5. Model中的验证规则
  6. Flask 学习系列(四)---Jinjia2 模板继承
  7. Java基础:(一)数据类型
  8. AngularJS(三):重复HTML元素、数据绑定
  9. cf1027F. Session in BSU(并查集 匈牙利)
  10. 测试的发现遗漏BUG的做法