curl扩展与composer

作业标题:0824 curl扩展与composer
作业内容:1. 使用curl请求聚合支付的驾考宝典题库接口数据, 并渲染到页面上; 2. - composer 常用的指令有哪些? 3. mvc pathinfo 路由映射是怎么实现的?


  • 使用curl请求聚合支付的驾考宝典题库接口数据, 并渲染到页面上;
  1. <?php
  2. //curl初始化 获取一个curl句柄,在后端发起网络请求
  3. $ch=curl_init();
  4. $url="http://v.juhe.cn/jztk/query?";
  5. $key='acab39426b2c6f83c2782c795060bb4a';
  6. $subject=1;
  7. $model='c1';
  8. $testType='rand';
  9. $query=http_build_query(["key"=>$key, 'subject'=>$subject,
  10. 'model'=>$model,'testType'=>$testType]);
  11. //echo $query;
  12. curl_setopt($ch,CURLOPT_URL,$url.$query);
  13. curl_setopt($ch,CURLOPT_HTTPGET,true);
  14. // 启用时会将头文件的信息作为数据流输出。
  15. curl_setopt($ch,CURLOPT_HEADER,false);
  16. // true 将curl_exec()获取的信息以字符串返回,而不是直接输出。
  17. curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
  18. $apiData = curl_exec($ch);
  19. // $apiData = json_decode($apiData,true);
  20. // var_dump( $apiData);
  21. // die;
  22. //echo $apiData;
  23. curl_close($ch);
  24. ?>
  25. <!DOCTYPE html>
  26. <html lang="en">
  27. <head>
  28. <meta charset="UTF-8">
  29. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  30. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  31. <title>驾照题库</title>
  32. </head>
  33. <style>
  34. table {
  35. color: #555;
  36. background-color: #efefef;
  37. border-collapse: collapse;
  38. width: 800px;
  39. text-align: left;
  40. margin: auto;
  41. }
  42. td {
  43. border: 2px solid #FFF;
  44. padding: 5px;
  45. }
  46. table caption {
  47. font-size: 1.2rem;
  48. margin-bottom: 15px;
  49. }
  50. table thead tr:first-of-type {
  51. background-color: darkturquoise;
  52. color: white;
  53. }
  54. </style>
  55. <body>
  56. <script>
  57. const obj = <?=$apiData?>;
  58. // 创建表格元素
  59. const table = document.createElement('table');
  60. console.log(table);
  61. // 表头: 城市 + 标题, 如:合肥天气预报
  62. table.createCaption().textContent ='';
  63. // 创建表头,并尾部添加新行,将表头参数填入
  64. const tr = table.createTHead().insertRow(-1);
  65. tr.insertCell(0).innerText = '驾校答题';
  66. // 遍历未来几天的天气对象数组
  67. obj.result.forEach(item=>{
  68. // 先生成一个新行,并插入到表尾
  69. const row = table.insertRow(-1);
  70. // 遍历每一天的天气对象数组,并填充到生成的单元格中
  71. row.insertCell(0).innerHTML = item.id+"、"+item.question+"<br>"+"A:"+item.item1+"<br>"+
  72. "B:"+item.item2+"<br>"+"C:"+item.item3+"<br>"+"D:"+item.item1+"<br>"+"正确答案:"+item.explains+
  73. "<br>"+"<img src="+item.url+">";
  74. // // row.insertCell(0).innerText = item.date;
  75. // row.insertCell(1).innerText = item.temperature;
  76. // row.insertCell(2).innerText = item.weather;
  77. // row.insertCell(3).innerText = item.direct;
  78. // 将生成的该行插入到表格元素中
  79. table.appendChild(row);
  80. });
  81. // 最后将表格添加到页面中
  82. document.body.appendChild(table);
  83. </script>
  84. </body>
  85. </html>

接口调用

  • composer 常用的指令有哪些?
    显示所有已经安装的包
    composer show
    移除指定的依赖包package_name
    composer remove package_name
    搜索包名为package_name的信息
    composer search package_name
    添加一个指定的包(不需要手动在 composer.json 里添加依赖信息)
    composer 会先找到合适的版本,然后更新composer.json文件,在 require 那添加 package_name 包的相关信息,
    再把相关的依赖下载下来进行安装,最后更新 composer.lock 文件并生成 php 的自动加载文件。
    composer require package_name
    更新所有依赖包
    composer update
    更新指定的包package_name
    composer update package_name
    更新指定的多个包package_name1、package_name2
    composer update package_name1 package_name2
    通过通配符匹配包更新
    composer update vendor/*
  • mvc pathinfo 路由映射是怎么实现的?
  1. <?php
  2. //mvc这种架构模式 url地址都会映射到控制器下面的一个具体操作方法上
  3. namespace mvc;
  4. class User
  5. {
  6. function index($id,$name)
  7. {
  8. return "您好$name,你的id是$id";
  9. }
  10. function getName()
  11. {
  12. return '你好';
  13. }
  14. }
  15. $pathinfo =array_values(array_filter(explode("/",$_SERVER['PATH_INFO']))) ;
  16. // var_dump($pathinfo);
  17. $controller = __NAMESPACE__.'\\'.array_shift($pathinfo);
  18. // echo $controller;
  19. $action = array_shift($pathinfo);
  20. // echo $action;
  21. // $params = ['id'=>1,'name'=>'peter'];
  22. // 从url http://chloe.io/0824/api/index.php/user/index/id/1/name/peter 中提取参数
  23. // var_dump($pathinfo);
  24. for ($i=0; $i < count($pathinfo) ; $i+=2) {
  25. if(isset($pathinfo[$i+1]) && !empty($pathinfo[$i+1]))
  26. $params[$pathinfo[$i]] = $pathinfo[$i+1];
  27. }
  28. // var_dump($params);
  29. echo call_user_func_array([(new $controller),$action],$params);

更多相关文章

  1. Ajax 添加删除修改
  2. 前端学习第一课
  3. table表格的运用
  4. 注册表单实战案例
  5. PHP:【商城后台管理系统】部署角色管理,角色添加,菜单权限,删除角色
  6. 4.【商城后台管理系统】基于TP6开发后台无限极菜单的管理显示与
  7. PHP:【商城后台管理系统】部署管理员一级菜单和二级菜单列表添加
  8. PHP:【商城后台管理系统】部署管理员列表,添加/编辑/删除功能
  9. Java 给 Word 添加数字签名

随机推荐

  1. Android Ams浅析
  2. Android 实现直接拒接来电
  3. Android:控件布局(相对布局)RelativeLayout
  4. android ICS4.0.3 改变默认字体大小
  5. android带动画的圆形进度条
  6. android 设置界面
  7. android的apk包签名
  8. Androidx学习笔记(7)--常见布局--相对布局
  9. Android(安卓)5.X新特性——Material Des
  10. Android中对Handler用法的总结