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都加 ...
随机推荐
- go语言版本测试, 一段错误代码引发的血案
起因: 最近在学习手写docker,看到了一段会编译错误的代码. 过程: 最近在学习docker,看到一段示例代码,每次编译时会报错. 因此, 无法继续下去, 只好在网上搜索解决方案, 用了很多时间, ...
- wordpress插件:multiple post thumbnails(可为文章添加多个特色图片)
我们经常会给wordpress的文章加上特色图片来实现日志缩略图的需求,但是很多时候一张图片并不能够完美而又全面的表达我们wordpress文章的内容,这时候您可能就会需要这样一个能让wordpres ...
- 一个帮助理清思路的神奇工具--debug
今天在回顾复习之前的知识的时候,对嵌套循环犯了迷糊,于是我使用了debug这个方法,不仅让我弄清楚嵌套循环输出结果是如何得来,也让我明白了具体流程. 在这里,IDE我使用的是PyCharm,自然用它自 ...
- 双十一还在盖楼?少年你应该掌握Docker 部署 Consul了
▶ Spring Boot 依赖与配置 Maven 依赖 <dependencyManagement> <dependencies> <dependency> &l ...
- LeetCode 5264 在受污染的二叉树中查找元素 Find Elements in a Contaminated Binary Tree
地址 https://leetcode-cn.com/contest/weekly-contest-163/problems/find-elements-in-a-contaminated-binar ...
- Git: Setup a remote Git repository
o setup a folder on a server which service for remote Git repository, apply the following steps: Cre ...
- [WPF] Caliburn Micro学习三 Binding
Caliburn Micro学习一 Installation Caliburn Micro学习二 Infrastructure 如果说WPF推崇的Binding开辟了一条UI开发新的方式——让写代码的 ...
- java高级——反射
慕课网<反射——Java高级开发必须懂的>听课笔记 一.class类的使用 class ClassDemo { public static void main(String[] args) ...
- CSS:CSS弹性盒子布局 Flexible Box
一.简介 flexbox:全称Flexible Box, 弹性盒子布局.可以简单实现各种伸缩性的设计,它是由伸缩容器和伸缩项目组成.任何一个元素都可以指定为flexbox布局.这种新的布局方案在200 ...
- Pod镜像拉取策略imagePullPolicy
默认值是IfNotPresent Always 总是拉取: 首先获取仓库镜像信息, 如果仓库中的镜像与本地不同,那么仓库中的镜像会被拉取并覆盖本地. 如果仓库中的镜像与本地一致,那么不会拉取镜像. 如 ...