tp5引用第三方类vendor或extend(多种方法)
引入extend第三方类
方法一:命名空间引入
我们只需要把自己的类库包目录放入EXTEND_PATH
目录(默认为extend
,可配置),就可以自动注册对应的命名空间。
我们在extend
目录下面新增一个lib
目录,然后定义一个\lib\Mycla
类( 类文件位于extend/lib/Mycla.php
)如下:
namespace lib; class Mycla
{
public function index(){
echo "这是Mycla";
}
}
我们就可以直接实例化和调用:
$myc = new \lib\Mycla();
$myc->index();
也可以使用use:
use lib\Mycla; $myc = new Mycla();
$myc->index();
还有一点要注意,命名空间的命名必须要根据目录结构:
如果你的命名空间不是按照这个规则命名,你调用这个类就会报找不到
方法二:类库导入
如果你不需要系统的自动加载功能,又或者没有使用命名空间的话,那么也可以使用think\Loader
类的import
方法手动加载类库文件,例如:
// 引入 extend/qrcode.php;
Loader::import('qrcode', EXTEND_PATH);
// 助手函数
import('qrcode', EXTEND_PATH);
$qrc = new \qrcode();
$qrc->index(); // 引入 extend/tes/Ind.php;第三参数是后缀名,不加也可以
Loader::import('tes.Ind', EXTEND_PATH,'.php');
// 助手函数;第三个参数后缀名,不加也可以
import('tes.Ind', EXTEND_PATH);
$ind = new \Ind();
$ind->index();
引入vendor第三方类
vendor的不能使用命名空间引入,只能使用函数助手或Loader::import
// 引入 vendor/tes/Ind.php
Loader::import('tes.Ind', VENDOR_PATH,'.php');
// 助手函数
import('tes.Ind', VENDOR_PATH,'.php');
//助手函数,快速导入第三方框架类库
vendor('tes.Ind'); $ind = new \Ind();
$ind->index();
使用include_once或include引入
如果命名空间和函数助手都不想使用,也可以直接使用include_once或include这两个php原生方法:
include_once '../extend/tes/Ind.php';
$ind = new \Ind();
$ind->index();
同样,如果想引入vendor下的文件,只需要改一下名称就可以了
还有一点要注意,上面的代码我是在控制器里写的,刚开始导入我是沿着文件夹一个一个返回,结果报这个类找不到:
include_once '../../../extend/tes/Ind.php';
这里是错误例子鹅。include_once或include使用方法都一样,我就不做演示了
引入extend或vendor里面的数组
有些情况我们定义了数组放在extend或vendor下文件夹里(一般都放在extend),这样就可以公共使用数组
extend/tes/conf.php;如果不写return,也可以直接调用$student,最好预先定义不然报红(不定也不会报错)
<?php
return $student = [
"Id" => 1,
"name" => "LHS",
"age" => "21"
];
在index控制器引入,这样就可以使用数组:
//预先定义,不然报红(注:不定义也不会报错)
// $student = [];
$student = include_once '../extend/tes/conf.php';
print_r($student);
同样,如果想引入vendor下的文件下的数组,只需要改一下名称就可以了;还有引入数组建议使用这种方法,Loader::import和import都不能引入数组
tp5引用第三方类vendor或extend(多种方法)的更多相关文章
- tp5自定义扩展类的使用extend
1.在入口index.php定义目录 define('EXTEND_PATH', __DIR__ .'/../extend/'); 2.在使用页引用 use lib\Page; 3.初始化 $page ...
- tp5.1引用第三方类库
1.TP5第三方类库全部放在Extend目录内,如果是放在Extend目录下,则不需要再类库里声明namespace.直接 new \YourClass() 即可 2.如果你的类库在Extend的子目 ...
- 如何在制作jar包时引用第三方jar包
我用的是Eclipse打包,但在CMD窗口执行的时候报“ActiveMQ.jar中没有主清单属性”错误. 在网上搜了下,这个与MANIFEST.MF文件有关,该文件没有定义MAIN方法所在类的路径,利 ...
- VS中引用第三方库的方法(配置sqlite数据库)
我们在编写程序时,,不可避免的会使用第三方的库文件,很少使用源文件(.cpp),大部分是使用对类进行声明的头文件和封装了类的链接库(静态lib或动态dll),比如我们写程序用的iostream这个库, ...
- tp5引入第三方类库
1.在/public/index.php中添加 define('EXTEND_PATH', '../extend/'); 2./extend/lib 中添加第三方类,类文件的名称和类名一样,命名空间为 ...
- ASP.NET CORE MVC 2.0 项目中引用第三方DLL报错的解决办法 - InvalidOperationException: Cannot find compilation library location for package
目前在学习ASP.NET CORE MVC中,今天看到微软在ASP.NET CORE MVC 2.0中又恢复了允许开发人员引用第三方DLL程序集的功能,感到甚是高兴!于是我急忙写了个Demo想试试,我 ...
- 【Android Studio安装部署系列】十七、Android studio引用第三方库、jar、so、arr文件
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 在Android开发过程,经常需要用到第三方库以及jar.so.arr文件,那么如何引用到项目中呢?下面简单介绍下. 引用第三方库 ...
- java在cmd下编译引用第三方jar包
java在cmd下编译引用第三方jar包 转 https://blog.csdn.net/qq_21439971/article/details/53924594 获取第三方jar包 第三包我们可以引 ...
- C# 组件模组引用第三方组件问题
对接上一文章由于是动态加载指定程序集,会把当前目录下所有dll都加载进来.如果像sqlite这种第三组件调用了由C.C++非.net语言所以生成的Dll.因为自动生成的原因.会把非C#生成的dll都加 ...
随机推荐
- [Hadoop]浅谈MapReduce原理及执行流程
MapReduce MapReduce原理非常重要,hive与spark都是基于MR原理 MapReduce采用多进程,方便对每个任务资源控制和调配,但是进程消耗更多的启动时间,因此MR时效性不高.适 ...
- 小白学 Python(18):基础文件操作
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- C语言中的可变参数-printf的实现原理
C语言中的可变参数-printf的实现原理 在C/C++中,对函数参数的扫描是从后向前的.C/C++的函数参数是通过压入堆栈的方式来给函数传参数的(堆栈是一种先进后出的数据结构),最先压入的参数最后出 ...
- oracle直接调用web services
oracle调用C#开发web services 1, 去oracle官网上下载dbws-callout-utility-10131.zip 地址:https://oracle-base.com/a ...
- 深入理解计算机系统 第三章 程序的机器级表示 Part1 第二遍
第一遍对应笔记链接 https://www.cnblogs.com/stone94/p/9905345.html 机器级代码 计算机系统使用了多种不同形式的抽象,利用更简单的抽象模型来隐藏实现的细节. ...
- tensorflow中的学习率调整策略
通常为了模型能更好的收敛,随着训练的进行,希望能够减小学习率,以使得模型能够更好地收敛,找到loss最低的那个点. tensorflow中提供了多种学习率的调整方式.在https://www.tens ...
- Swoole和Redis实现的并发队列处理系统
由于PHP不支持多线程,但是作为一个完善的系统,有很多操作都是需要异步完成的.为了完成这些异步操作,我们做了一个基于Redis队列任务系统. 大家知道,一个消息队列处理系统主要分为两大部分:消费者和生 ...
- lqb 基础练习 十六进制转八进制 (字符串进行进制转化)
基础练习 十六进制转八进制 时间限制:1.0s 内存限制:512.0MB 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n ...
- 航空概论(历年资料,引之百度文库,PS:未调格式,有点乱)
航空航天尔雅 选择题1. 已经实现了<天方夜谭>中的飞毯设想.—— A——美国2. 地球到月球大约—— C 38 万公里3. 建立了航空史上第一条定期空中路线—— B——德国4. 对于孔明 ...
- poj 3974 Palindrome (manacher)
Palindrome Time Limit: 15000MS Memory Limit: 65536K Total Submissions: 12616 Accepted: 4769 Desc ...