引入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(多种方法)的更多相关文章

  1. tp5自定义扩展类的使用extend

    1.在入口index.php定义目录 define('EXTEND_PATH', __DIR__ .'/../extend/'); 2.在使用页引用 use lib\Page; 3.初始化 $page ...

  2. tp5.1引用第三方类库

    1.TP5第三方类库全部放在Extend目录内,如果是放在Extend目录下,则不需要再类库里声明namespace.直接 new \YourClass() 即可 2.如果你的类库在Extend的子目 ...

  3. 如何在制作jar包时引用第三方jar包

    我用的是Eclipse打包,但在CMD窗口执行的时候报“ActiveMQ.jar中没有主清单属性”错误. 在网上搜了下,这个与MANIFEST.MF文件有关,该文件没有定义MAIN方法所在类的路径,利 ...

  4. VS中引用第三方库的方法(配置sqlite数据库)

    我们在编写程序时,,不可避免的会使用第三方的库文件,很少使用源文件(.cpp),大部分是使用对类进行声明的头文件和封装了类的链接库(静态lib或动态dll),比如我们写程序用的iostream这个库, ...

  5. tp5引入第三方类库

    1.在/public/index.php中添加 define('EXTEND_PATH', '../extend/'); 2./extend/lib 中添加第三方类,类文件的名称和类名一样,命名空间为 ...

  6. 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想试试,我 ...

  7. 【Android Studio安装部署系列】十七、Android studio引用第三方库、jar、so、arr文件

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 在Android开发过程,经常需要用到第三方库以及jar.so.arr文件,那么如何引用到项目中呢?下面简单介绍下. 引用第三方库 ...

  8. java在cmd下编译引用第三方jar包

    java在cmd下编译引用第三方jar包 转 https://blog.csdn.net/qq_21439971/article/details/53924594 获取第三方jar包 第三包我们可以引 ...

  9. C# 组件模组引用第三方组件问题

    对接上一文章由于是动态加载指定程序集,会把当前目录下所有dll都加载进来.如果像sqlite这种第三组件调用了由C.C++非.net语言所以生成的Dll.因为自动生成的原因.会把非C#生成的dll都加 ...

随机推荐

  1. 【ObjectC—浅copy和深copy】

    一.OC设计copy的目的 为了能够从源对象copy一个新的对象副本,改变新对象(副本)的时候,不会影响到原来的对象. 二.实现copy协议 OC提供了两种copy方法:copy和mutableCop ...

  2. 入门react

    前言:今天翻到了好久之前学习react时的笔记,拿出来记录一下以免忘掉,里面主要是记录了安装环境,创建项目,启动项目,jsx,组件介绍,组件通信,多层嵌套,路由搭建,路由传参,redux.记录的比较浅 ...

  3. Md5实例

    MD5实例 我的md5源码 当我们对数据进行操作时,存储到数据库时,有时候不希望别人能够看到,通过md5能够实现对数据的加密. java代码 ```javaimport org.springframe ...

  4. a 标签添加 onclick 事件

    a 标签添加 onclick 事件 <a href="javascript:void(0);" οnclick="js_method()">点击&l ...

  5. CMake 常用函数记录

    1.cmake_minunum_required(VERSION 2.6) #cmake 最低要求版本号 2.PROJECT(projectname [CXX] [C] [Java]) #这个指令隐式 ...

  6. CSS 技巧一则 -- 在 CSS 中使用三角函数绘制曲线图形及展示动画

    最近一直在使用 css-doodle 实现一些 CSS 效果. css-doodle 是一个基于 Web-Component 的库.允许我们快速的创建基于 CSS Grid 布局的页面,以实现各种 C ...

  7. 关于GC(中):Java垃圾回收相关基础知识

    Java内存模型 (图源: 深入理解JVM-内存模型(jmm)和GC) 区域名 英文名 访问权限 作用 备注 程序计数器 Program Counter Register 线程隔离 标记待取的下一条执 ...

  8. 原生js实现简单的下拉加载

    #获取当前滚动条的高度document.documentElement.scrollTop #获取当前窗口的高度 document.documentElement.clientHeight #获取当前 ...

  9. javescript 的 对象

    一,定义:对象是JavaScript的一个基本数据类型,是一种复合值,它将很多值(原始值或者其他对象)聚合在一起,可通过名字(name/作为属性名)访问这些值.即属性的无序集合. 关键是name属性名 ...

  10. Java第09次实验(IO流)-实验报告

    0. 字节流与二进制文件 使用DataOutputStream与FileOutputStream将Student对象写入二进制文件student.data 二进制文件与文本文件的区别 try...ca ...