世界超算排行榜:太湖之光!

IT教程学习网

网站建设

thinkphp5如何引入加载第三方类库

文章来源:未知   作者:inalls   浏览量:
  Thinkphp5为我们提供了相当方便的功能来引入加载第三方的类库,这包括自己写的类库,或者使用composer安装的类库,这使得我们开发项目变得简单起来,可以把别人写和类库方便的给自己使用。Tpt5同时为了我们提供了完善的自动加载机制,解决thinkphp5这种引入加载第三方类库的难题。

Tp5自动加载机制讲解

  Th5自动加载机制支持类库映射和 composer 类库的自动加载。自动加载的实现由 think\Loader 类库完成,自动加载规范符合PHP的 PSR-4 。
由于新版 ThinkPHP 完全采用了命名空间的特性,因此只需要给类库正确定义所在的命名空间,而命名空间的路径与类库文件的目录一致,那么就可以实现类的自动加载。类库的自动加载检测顺序如下:
1、 类库映射检测;
2、 PSR-4 自动加载检测;
3、 PSR-0 自动加载检测;
系统会按顺序检测,一旦检测生效的话,就会自动载入对应的类库文件。

通过类库映射自动引入加载Tp5第三方类库

  如果定义了较多的命名空间的话,效率会有所下降,所以,我们可以给常用的类库定义类库映射。 命名类库映射相当于给类文件定义了一个别名,效率会比命名空间定位更高效,例如:
Loader::addClassMap('think\Log',LIB_PATH.'think\Log.php');
Loader::addClassMap('org\util\Array',LIB_PATH.'org\util\Array.php');
也可以利用 addClassMap 方法批量导入类库映射定义,例如:
$map = [
'think\Log' => LIB_PATH.'think\Log.php',
'org\util\array'=> LIB_PATH.'org\util\Array.php'
];
Loader::addClassMap($map);
  虽然通过类库映射的方式注册的类可以不强制要求对应命名空间目录,但是仍然建议遵循PSR-4规范定义类库和目录。

使用 import方法手动加载tp5第三方类库文件

例如:
Loader::import('org.util.array');
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 应用类库
@ 表示当前模块类库包
  如果完全遵从系统的命名空间定义的话,一般来说无需手动加载类库文件,直接实例化即可。ThinkPHP5.0 不推荐使用 import 方法。

使用tp5的Composer自动加载

  5.0版本支持 Composer 安装的类库的自动加载,你可以直接按照 Composer 依赖库中的命名空间直接调用,使用方法如何下。我们这里以tp5.0完整版来进行说明,如果不是完整版请先使用composer安装扩展类库。
打开D:\DedeAMPZ\WebRoot\tp\vendor\composer下的autoload_psr4.php类库映射文件。
 
return array(
    'think\\mongo\\' => array($vendorDir . '/topthink/think-mongo/src'),
    'think\\migration\\' => array($vendorDir . '/topthink/think-migration/src'),
    'think\\helper\\' => array($vendorDir . '/topthink/think-helper/src'),
    'think\\composer\\' => array($vendorDir . '/topthink/think-installer/src'),
    'think\\captcha\\' => array($vendorDir . '/topthink/think-captcha/src'),
    'think\\' => array($baseDir . '/thinkphp/library/think', $vendorDir . '/topthink/think-image/src', $vendorDir . '/topthink/think-queue/src'),
    'app\\' => array($baseDir . '/application'),
    'Phinx\\' => array($vendorDir . '/topthink/think-migration/phinx/src/Phinx'),
);
  这个文件列出了使用psr-4规范的类库映射文件,如果开启URL路由的话,我们在控制器这样来使用composer安装的类库,我们假设以使用TP5验证码类库,看上面的文件有这样对应的一行: 'think\\captcha\\' => array($vendorDir . '/topthink/think-captcha/src'),
使用第一步:在控制器中引入命名空间user think\captcha;
使用第二步:实例化类
$capt=new captcha\Captcha();
if(!$capt->check($_POST['verify']))
{
Echo ‘checking code lose’;
}

分享到:

  • Copyright © 2014-2026 深腾网 版权所有:静岳互联网咨询工作室
  • 冀ICP备16020878-1