• ThinkPHP5——引用vendor或extend里的第三方类(多种方法)


    引入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都不能引入数组

  • 相关阅读:
    Linux私房菜——防火墙部分笔记
    ubuntu
    序列求和
    圆的面积
    Fibonacci数列
    JavaScript中定义数组
    C语言中的EOF
    jQuery获取的值去掉px
    jQuery中单引号和双引号的使用
    jQuery报错:Uncaught ReferenceError: $ is not defined
  • 原文地址:https://www.cnblogs.com/bushui/p/11996500.html
Copyright © 2020-2023  润新知