引入extend第三方类
方法一:命名空间引入
我们只需要把自己的类库包目录放入EXTEND_PATH
目录(默认为extend
,可配置),就可以自动注册对应的命名空间。
我们在extend
目录下面新增一个lib
目录,然后定义一个libMycla
类( 类文件位于extend/lib/Mycla.php
)如下:
namespace lib; class Mycla { public function index(){ echo "这是Mycla"; } }
我们就可以直接实例化和调用:
$myc = new libMycla(); $myc->index();
也可以使用use:
use libMycla; $myc = new Mycla(); $myc->index();
还有一点要注意,命名空间的命名必须要根据目录结构:
如果你的命名空间不是按照这个规则命名,你调用这个类就会报找不到
方法二:类库导入
如果你不需要系统的自动加载功能,又或者没有使用命名空间的话,那么也可以使用thinkLoader
类的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都不能引入数组