PHP系列 | ThinkPHP5.1 如何自动加载第三方SDK(非composer包 )
注意:这里只是针对于非Composer 安装包的自动加载的实现,能用composer安装的自动跳过。
由于ThinkPHP5.1 严格遵循PSR-4规范,不再建议手动导入类库文件,所以新版取消了Loader::import方法以及import和vendor助手函数,推荐全面采用命名空间方式的类以及自动加载机制,如果必须使用请直接改为php内置的include或者require语法。
以下以钉钉官方的SDK为案例(由于钉钉官方没有像阿里云那样直接可以使用composer直接安装)。
当然Github有一个开源的composer安装包:https://github.com/mingyoung/dingtalk
你说你为啥不用这个,却要自定自动加载官方的包。因为这个PHP的版本必须是大于7.0,而针对于5.6则就不行了
1、官方SDK下载地址:https://ding-doc.dingtalk.com/doc#/faquestions/vzbp02
2、下载解压后,首先将第三方SDK复制到项目中vendor目录下。
3、在composer.json文件中添加:"files":["vendor/dingdingsdk/TopSdk.php"],添加后:
"autoload": {
"psr-4": {
"app\\": "application",
"scource\\": "scource"
},
"files":[
"vendor/dingdingsdk/TopSdk.php"
]
},
4、通过终端跳转到项目根目录,然后执行 composer dump-autoload
5、然后在项目中就可以直接使用了
use DingTalkClient;
use DingTalkConstant;
use OapiGettokenRequest; $appKey= 'dingt4lur7345435tiqnrp';
$appSecret= 'QWagw3j_R5J2fSK43KgRn_vtFFFFFFoooqLzOBDEwx8izfu-hrB';
$client = new DingTalkClient();
$req = new OapiGettokenRequest();
$resp = $client->executeWithAccessKey($req,null,$appKey,$appSecret);
钉钉调用案例
1、获取access_token 令牌、创建部门
$appKey= 'ding8l64ltuffd';
$appSecret= 'u2LQPxU_0l2Il3izeeeexx13fHgLB9Z28M5jyJwJV-JXlhH7KDd_slw2'; $client = new DingTalkClient(DingTalkConstant::$CALL_TYPE_OAPI,DingTalkConstant::$METHOD_GET,DingTalkConstant::$FORMAT_JSON);
$req = new OapiGettokenRequest();
$req->setAppkey($appKey);
$req->setAppsecret($appSecret);
$resp = $client->execute($req,null,'https://oapi.dingtalk.com/gettoken');
$accessToken = $resp->access_token; $client = new DingTalkClient(DingTalkConstant::$CALL_TYPE_OAPI,DingTalkConstant::$METHOD_POST,DingTalkConstant::$FORMAT_JSON);
$req = new OapiDepartmentCreateRequest();
$req->setName("Tinywan部门");
$req->setParentid('1');
$req->setCreateDeptGroup(true); // 创建一个关联此部门的企业群
$req->setOrder("100");
$req->setSourceIdentifier('group_001'); // 部门标识字段,开发者可用该字段来唯一标识一个部门,并与钉钉外部通讯录里的部门做映射
$result2 = $client->execute($req,$accessToken,'https://oapi.dingtalk.com/department/create');
halt($result2);
PHP系列 | ThinkPHP5.1 如何自动加载第三方SDK(非composer包 )的更多相关文章
- thinkphp系列:类的自动加载是如何设计的
在使用框架开发时,可以发现框架有很多核心类,却很少看到显示的引入某个文件的代码,这是因为框架都采用了类的自动加载机制,即使用到类时,框架会自动找到该类所在文件的位置并引入该文件.为了更容易看出代码思路 ...
- maven 手动加载第三方jar、zip包
使用maven搭建工程时,难免要加载大量的第三方的jar包.zip包比较少用,而maven的官网提供的jar往往不能满足需求,这时需要我们手动加载到我们本地或nexus私服的仓库中. 1.加载jar包 ...
- ThinkPHP5.0源码学习之注册自动加载
ThinkPHP5框架的自动注册加载流程如下:
- 详解composer的自动加载机制
composer是一个用PHP开发的用来管理项目依赖的工具,当你在项目中声明了依赖关系后,composer可以自动帮你下载和安装这些依赖库,并实现自动加载代码. 安装composer composer ...
- thinkphp5源码剖析系列1-类的自动加载机制
前言 tp5想必大家都不陌生,但是大部分人都停留在应用的层面,我将开启系列随笔,深入剖析tp5源码,以供大家顺利进阶.本章将从类的自动加载讲起,自动加载是tp框架的灵魂所在,也是成熟php框架的必备功 ...
- thinkphp5.0 自动加载
自动加载 概述 ThinkPHP5.0真正实现了按需加载,所有类库采用自动加载机制,并且支持类库映射和composer类库的自动加载. 自动加载的实现由think\Loader类库完成,自动加载规范符 ...
- thinkphp5.0自动加载
概述 ThinkPHP5.0 真正实现了按需加载,所有类库采用自动加载机制,并且支持类库映射和composer类库的自动加载. 自动加载的实现由think\Loader类库完成,自动加载规范符合PHP ...
- Thinkphp5.1自动加载机制
Thinkphp5.1自动加载机制 自动加载机制 注册自动加载 引入静态自动加载映射文件,autoload_static.php 根据首字母前缀将不同的加载类归类-$prefixLengthsPsr4 ...
- 如何实现一个php框架系列文章【3】支持psr4的自动加载类
psr4自动加载规范https://github.com/PizzaLiu/PHP-FIG/blob/master/PSR-4-autoloader-cn.md 我们把第三方使用psr规范的类库放在v ...
随机推荐
- 第十八篇 admin组件
admin组件 admin组件使用 admin源码解析 admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以 ...
- P1036 跟奥巴马一起编程
转跳点:
- 外部 Storage Provider【转】
如果 Kubernetes 部署在诸如 AWS.GCE.Azure 等公有云上,可以直接使用云硬盘作为 Volume,下面是 AWS Elastic Block Store 的例子: 要在 Pod 中 ...
- Linux下C程序的内存映像
2.Linux下C程序的内存映像 2.1. 代码段.只读数据段(1)对应着程序中的代码(函数),代码段在Linux中又叫文本段(.text)(2)只读数据段就是在程序运行期间只能读不能写的数据,con ...
- i春秋-web-upload(文件内容读取)(“百度杯”九月场)
提示很明显,flag在flag.php中,所以,任务就是获取flag.php的内容. 方法一:一句话+菜刀(不再叙述) 方法二:上传脚本,使脚本拥有一定权限,再输出flag 先造一个php脚本 < ...
- c++ 字母排序
char a[123] = {'Z', 's', 'p', 'l', 'j', 'r', 'q', 'v', 'n', 'm', 'C', 'F', 'D', 'B', 'A', '2', '0', ...
- XML--XML Schema Definition(四)
参考 http://www.w3school.com.cn/schema/index.asp XSD 复合类型指示器 通过指示器,我们可以控制在文档中使用元素的方式.有七种指示器: Order 指示器 ...
- Servlet详细教程
Servlet简介 servlet是Server Applet的简称,翻译过来就是服务程序.好吧,这么说你可能还是不太懂,简单的讲,这个servlet是运行在服务器上的一个小程序,用来处理服务器请求的 ...
- EOJ Monthly 2020.1 E. 数的变幻
题目链接:https://acm.ecnu.edu.cn/contest/247/problem/E/ 这道题是cf原题: Codeforces Round #608 (Div. 2) E. Comm ...
- 吴裕雄--天生自然 JAVASCRIPT开发学习: 类型转换
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...