# ILab-extend **Repository Path**: guolixun/ilab-extend ## Basic Information - **Project Name**: ILab-extend - **Description**: 国家虚仿平台iLab-x 2.0对接(PHP版)类库 - **Primary Language**: PHP - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2021-07-13 - **Last Updated**: 2023-08-05 ## Categories & Tags **Categories**: web-dev-toolkits **Tags**: None ## README ILab-x 2.0对接 (PHP) =============== ## Description 国家虚仿平台iLab-x 2.0对接(PHP版)类库 ## Install ~~~ 1 下载源码包 2 作为第三方类库引入项目 ~~~ ## Remark * 此类库适用iLab-x 2.0 相关接口 * 含获取用户信息和access_token、刷新token、实验结果回传、附件上传四个接口 * 接口名称同iLab-x 2.0 接口名称一致 * 接口返回数据格式、异常同iLab-x 2.0接口一致 * 各接口参数、格式以及异常说明可查看iLab-x接口说明[国家虚仿项目接入](http://shenbao.ilab-x.com/declare/wiki/v2#2-1) ## Example * 获取用户信息和ACCESS_TOKEN ~~~ use ILab\ILab; class Example { /** * TOKEN有效期及用户信息请自行保存 */ public function token() { // APPID是由“实验空间”分配给各实验平台的唯一编号 // SECRET是由“实验空间”分配给各实验平台的密钥 $ilab = new ILab(APPID, SECRET); // TICKET:iLab实验中心详情页点击“我要做实验”按钮获取的令牌 // !!!注意 获取原始ticket即可,类库中已作相关解析编码处理,即此处TICKET无需decode处理 $response = $ilab->token(TICKET) } } ``` 返回示例: array:8 [ "code" => 0 "access_token" => "JQXIvOb3lNoNZrt5EPUWA2wse2ws9r/ZQKQyeG4TNJGLZqnM3HvyycIs9EqLXKPPS+LfsHHxk8NY0AGJY4KO6+n72BYohwQPDmOzB38a5mA=" "create_time" => 1626158597225 "create_time_display" => "2021-07-13 14:43:17" "expires_time" => 1626244997225 "expires_time_display" => "2021-07-14 14:43:17" "un" => "test1" "dis" => "贾宝玉" ] ``` ~~~ * 刷新ACCESS_TOKEN ~~~ use ILab\ILab; class Example { public function refresh() { // APPID是由“实验空间”分配给各实验平台的唯一编号 // SECRET是由“实验空间”分配给各实验平台的密钥 $ilab = new ILab(APPID, SECRET); // TOKEN:获取token接口返回的access_token $response = $ilab->refresh(TOKEN) } } ``` 返回示例: array:6 [ "code" => 0 "access_token" => "JQXIvOb3lNoNZrt5EPUWA2wse2ws9r/ZQKQyeG4TNJGvszvCtVAPAecN5M40ZDaiS+LfsHHxk8NY0AGJY4KO61YEsC5tiwvGBKgqeZJT1DQ=" "create_time" => 1626159105389 "create_time_display" => "2021-07-13 14:51:45" "expires_time" => 1626245505389 "expires_time_display" => "2021-07-14 14:51:45" ] ``` ~~~ * 实验结果数据回传 ~~~ use ILab\ILab; class Example { public function refresh() { /** * 注意事项: * 1、请自行生成唯一性originId(平台唯一且由大小写字母、数字、“_”组成) * 2、实验步骤记录(不少于十步) * 3、请注意实验气质时间(13位时间戳)、以及实验用时(单位:秒) */ $data = [ "username" => "test1", "title" =>"上传测试111", "status" => 1, "score"=>100, "startTime"=>1626161547000, "endTime"=>1626162027000, "timeUsed"=>480, "appid"=>"100400", "originId"=> 'test1_16261615470', "steps"=> [ [ "seq" => 1, "title"=> "实验步骤1", "startTime"=> 1626161548000, "endTime"=> 1626161567000, "timeUsed"=> 19, "expectTime"=>2, "maxScore"=>10, "score"=>10, "repeatCount"=>1, "evaluation"=>"优", "scoringModel"=>"赋分模型", "remarks"=>"备注" ], [ "seq" => 2, "title"=> "实验步骤1", "startTime"=> 1626161567000, "endTime"=> 1626161569000, "timeUsed"=> 2, "expectTime"=>2, "maxScore"=>10, "score"=>10, "repeatCount"=>1, "evaluation"=>"优", "scoringModel"=>"赋分模型", "remarks"=>"备注" ], ... ]; // APPID是由“实验空间”分配给各实验平台的唯一编号 // SECRET是由“实验空间”分配给各实验平台的密钥 $ilab = new ILab(APPID, SECRET); // TOKEN:获取token接口返回的access_token return $ilab->data_upload($token, json_encode($data))); } } ``` 返回示例: array => [ "code" => 0 "id" => "48908" ] ``` ~~~ * 附件上传 ~~~ use ILab\ILab; class Example { public function attachment_upload() { // APPID是由“实验空间”分配给各实验平台的唯一编号 // SECRET是由“实验空间”分配给各实验平台的密钥 $ilab = new ILab(APPID, SECRET); // access_token:获取token接口返回的access_token // originId:数据回传接口中生成的唯一originId // filename:上传文件的名称,需要带文件扩展名,如:实验报告.pdf,无需对FILENAME进行urlEncode处理 // title:实验报告名称,无需对TITLE进行urlEncode处理 // remarks:备注(无备注传空值即可),无需对remarks进行urlEncode处理 // filePath:带上传附件的绝对路径 $response = $ilab->attachment_upload(access_token, originId, filename, title, remarks, filePath); } } ``` 返回示例 array:2 [ "code" => 0 "id" => "1619" ] ``` ~~~