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"],添加后:
1 2 3 4 5 6 7 8 9 | "autoload" : { "psr-4" : { "app\\" : "application" , "scource\\" : "scource" }, "files" :[ "vendor/dingdingsdk/TopSdk.php" ] }, |
4、通过终端跳转到项目根目录,然后执行 composer dump-autoload
5、然后在项目中就可以直接使用了
1 2 3 4 5 6 7 8 9 | 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 令牌、创建部门
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | $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 ); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2017-02-10 高性能流媒体服务器EasyDarwin