• 关于THINKPHP5种如何引入第三方的类文件


    tp5的模型虽然是固定的,但是很多人会建不同的目录结构,有的为了访问方式,有的是为了restful风格,所以引用三方包的时候 ,路径方式也不同,下面列出几种经常用到的:

    自动加载

     

    ThinkPHP5.0真正实现了按需加载,所有类库采用自动加载机制,并且支持类库映射和composer类库的自动加载。

    自动加载的实现由thinkLoader类库完成,自动加载规范符合PHP的PSR-4

    自动加载

    由于新版ThinkPHP完全采用了命名空间的特性,因此只需要给类库正确定义所在的命名空间,而命名空间的路径与类库文件的目录一致,那么就可以实现类的自动加载。

    类库的自动加载检测顺序如下:

    1、类库映射检测;
    2、PSR-4自动加载检测;
    3、PSR-0自动加载检测;

    系统会按顺序检测,一旦检测生效的话,就会自动载入对应的类库文件。

    类库映射

    遵循我们上面的命名空间定义规范的话,基本上可以完成类库的自动加载了,但是如果定义了较多的命名空间的话,效率会有所下降,所以,我们可以给常用的类库定义类库映射。命名类库映射相当于给类文件定义了一个别名,效率会比命名空间定位更高效,例如:

    Loader::addClassMap('thinkLog',LIB_PATH.'thinkLog.php');
    Loader::addClassMap('orgutilArray',LIB_PATH.'orgutilArray.php');

    也可以利用addClassMap方法批量导入类库映射定义,例如:

    $map = [
        'thinkLog'     =>  LIB_PATH.'thinkLog.php',
        'orgutilarray'=>  LIB_PATH.'orgutilArray.php'
    ];
    Loader::addClassMap($map);

    虽然通过类库映射的方式注册的类可以不强制要求对应命名空间目录,但是仍然建议遵循PSR-4规范定义类库和目录。

    类库导入

    如果你不需要系统的自动加载功能,又或者没有使用命名空间的话,那么也可以使用thinkLoader类的import方法手动加载类库文件,例如:

    Loader::import('org.util.array');       //import 进入 输入 导入 汇入
    Loader::import('@.util.upload');

    示例

    // 引入 extend/qrcode.php
    Loader::import('qrcode', EXTEND_PATH);
    // 助手函数
    import('qrcode', EXTEND_PATH);
    
    // 引入 extend/wechat-sdk/wechat.class.php
    Loader::import('wechat-sdk.wechat', EXTEND_PATH, '.class.php');
    // 助手函数
    import('wechat-sdk.wechat', EXTEND_PATH, '.class.php');

    类库导入也采用类似命名空间的概念(但不需要实际的命名空间支持),支持的“根命名空间”包括:

    目录说明
    behavior 系统行为类库
    think 核心基类库
    traits 系统Traits类库
    app 应用类库
    @ 表示当前模块类库包

    traits  特质 特征 性态 特性

    如果完全遵从系统的命名空间定义的话,一般来说无需手动加载类库文件,直接实例化即可。

    ThinkPHP5.0不推荐使用import方法。

    Composer自动加载

    5.0版本支持Composer安装的类库的自动加载,你可以直接按照Composer依赖库中的命名空间直接调用。

     
  • 相关阅读:
    测试面试题
    订单怎么测试?(主要测试订单的状态变化)
    还款功能怎么测试?
    登录功能怎么测试?
    apache配置详解与实践
    apache的安装
    linux系统优化(关闭SElinux、防火墙)
    linux网络配置
    linux的日志管理
    python的xlwt模块
  • 原文地址:https://www.cnblogs.com/HoverM/p/8990382.html
Copyright © 2020-2023  润新知