批改状态:合格
老师批语:
1.一般URL的组成:
?查询参数:多个参数之间通过&连接,空格用加号+#锚点信息2.常见获取URL信息的函数
$_SERVER['SERVER_NAME'] 获取当前脚本运行在服务的域名:主机名$_SERVER['REQUEST_URI'] URI 用来指定要访问的页面。例如$_SERVER['PHP_SELF'] 获得当前执行脚本文件名:包含路径$_SERVER['SCRIPT_NAME'] 包含当前脚本的路径。$_SERVER['PATH_INFO'] 包含由客户端提供的、跟在真实脚本名称之后并且在查询语句(query string)之前的路径信息$_SERVER['QUERY_STRING'] 获取当前请求的查询字符串3.URL相关的函数;
urlencode("str")与urldecode("url"):URL地址的编码和解码parse_str("query_string",$arr);把查询字母串解析成一个关联数组给$arr;http_build_query("关联数组");把一个关联数组转换成查询自负床格式parse_url('url');:解析URL并返回成一个关联数组4.其他常用url相关的常用函数
explode("分隔符","字符串"):把字符串分割成数组;ucfirst("字符串"):把字符串首字母大写array_filter($arr):过滤数组中的空值call_user_func_array([obj,func],[参数...]);异步调用函数__NAMESPACE__:空间名魔术常量;5.其他函数:
PHP_EOL:换行常量1.$curl=curl_init();初始化请求会话
2.curl_setopt($curl,”参数类型常量”,参数值);设置请求会话配置项;参数类型常量如下
3.$res=curl_exec($curl);执行请求返回结果
4.curl_close($curl);关闭请求会话;
1.此案例基于上一次作业:https://www.php.cn/blog/detail/26607.html
增加url地址解析类
<?phpuse app\Models\StaffsModel;use core\View;include __DIR__."/vendor/autoload.php";// echo "OK";class Route{private $classname="";private $func="";private $params=[];public $model=null;public $view=null;// private $class=null;public function __construct(StaffsModel $model,View $view){$this->model=$model;$this->view=$view;$this->execute();}//通过url地址信息获取控制器和函数名,并获取参数;public function purl(){if($_SERVER["PATH_INFO"]){$PI= $_SERVER["PATH_INFO"];$PI=ltrim($PI,'/');$controller=ucfirst(strstr($PI,'/',true));$func=ltrim(strstr($PI,"/"),"/");// echo $func,$controller;$this->classname="app\\Controllers\\".$controller;$this->func=$func;}if($_SERVER["QUERY_STRING"]){$p=$_SERVER["QUERY_STRING"];parse_str($p,$params);// print_r($params);$this->params=array_filter($params);}}public function execute(){$this->purl();//以变量名实列化类时:变量值必须具备完整命名空间$obj=new $this->classname ($this->model,$this->view);return call_user_func_array([$obj,$this->func],$this->params);// echo $this->classname,"<br>".$this->func,"<br>".print_r($this->params,true);}}
2.入口文件
include __DIR__."/Route.php";include __DIR__."/vendor/autoload.php";$model=new StaffsModel();$view=new View("app/View/staffs");new Route($model,$view);
3.运行结果:
1.代码
<?php$url="http://v.juhe.cn/joke/content/text.php?";$key="b82ad6748770b5130d49f61a7e12bae0";$page=1;$pagesize=5;$time=time();$query=http_build_query(["key"=>$key,"page"=>$page,"pagesize"=>$pagesize]);// echo "<pre>".$url.$query;$curl=curl_init();curl_setopt($curl,CURLOPT_URL,$url.$query);curl_setopt($curl,CURLOPT_HTTPGET,true);curl_setopt($curl,CURLOPT_HEADER,false);curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);$res=curl_exec($curl);curl_close($curl);// var_dump($curl);$data=json_decode($res,true);//把json数据类型转换成数组?><!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>api-5个小笑话</title></head><body><?php if($data["error_code"]===0):?><?php foreach($data["result"]["data"] as $row):?><h3><?= $row["updatetime"]?></h3><p><?= $row["content"]?></p><hr><?php endforeach ?><?php else:?><p><?=$data["reason"]?></p><?php endif ?></body></html>
2.运行结果
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号