/***设置获取获取当前请求的参数*@accesspublic*@paramstring|array$name变量名*@parammixed$default默认值*@paramstring|array$filter过滤方法*@returnmixed*/publicfunctionparam($name='',$default=null,$filter=null){//设置或者获取当前请求的参数if(empty($this->param)){//如果当前的参数为空$method=$this->method(true);//首先获取方法也就获取数据的类型//自动获取请求变量switch($method){//根据不同的情况设置case'POST'://post参数通过post方式进行获取$vars=$this->post(false);break;case'PUT':case'DELETE':case'PATCH':$vars=$this->put(false);//其它的通过put方式获取break;default:$vars=[];//默认初始化空数据}//当前请求参数和URL地址中的参数合并$this->param=array_merge($this->get(false),$vars,$this->route(false));//然后合并路由get及当前获取的参数//最后还都是大杂烩,}if(true===$name){//如果名字为真//获取包含文件上传信息的数组$file=$this->file();//包含文件$data=array_merge($this->param,$file);//合并参数及文件,统称为datareturn$this->input($data,'',$default,$filter);//返回输入的数据}return$this->input($this->param,$name,$default,$filter);//返回输入的参数}/***设置获取获取路由参数*@accesspublic*@paramstring|array$name变量名*@parammixed$default默认值*@paramstring|array$filter过滤方法*@returnmixed*/publicfunctionroute($name='',$default=null,$filter=null){//设置获取路由参数if(is_array($name)){//如果是数组形式这个即时优点,也是缺点$this->param=[];//拼合参数return$this->route=array_merge($this->route,$name);//返回路由数据}return$this->input($this->route,$name,$default,$filter);//否则简单的返回}/***设置获取获取GET参数*@accesspublic*@paramstring|array$name变量名*@parammixed$default默认值*@paramstring|array$filter过滤方法*@returnmixed*/publicfunctionget($name='',$default=null,$filter=null){//get方式获取参数if(empty($this->get)){//如果为空$this->get=$_GET;}if(is_array($name)){//如果是数组$this->param=[];return$this->get=array_merge($this->get,$name);}return$this->input($this->get,$name,$default,$filter);}//函数内部的容错机制需要特别的强悍/***设置获取获取POST参数*@accesspublic*@paramstring$name变量名*@parammixed$default默认值*@paramstring|array$filter过滤方法*@returnmixed*/publicfunctionpost($name='',$default=null,$filter=null){if(empty($this->post)){$this->post=$_POST;}if(is_array($name)){$this->param=[];return$this->post=array_merge($this->post,$name);}return$this->input($this->post,$name,$default,$filter);}//获取post数据/***设置获取获取PUT参数*@accesspublic*@paramstring|array$name变量名*@parammixed$default默认值*@paramstring|array$filter过滤方法*@returnmixed*/publicfunctionput($name='',$default=null,$filter=null){//获取PUT参数if(is_null($this->put)){//类型1$content=file_get_contents('php://input');//这样的数据流读入if(strpos($content,'":')){//如果有数据,应该是这个表单$this->put=json_decode($content,true);//json格式解析}else{parse_str($content,$this->put);//另外的格式的话,就需要解析字符串}}if(is_array($name)){//如果是数组$this->param=[];//参数获取return$this->put=is_null($this->put)?$name:array_merge($this->put,$name);}//返回参数信息return$this->input($this->put,$name,$default,$filter);//返回默认的信息}/***设置获取获取DELETE参数*@accesspublic*@paramstring|array$name变量名*@parammixed$default默认值*@paramstring|array$filter过滤方法*@returnmixed*/publicfunctiondelete($name='',$default=null,$filter=null){//设置获取delete参数return$this->put($name,$default,$filter);}/***设置获取获取PATCH参数*@accesspublic*@paramstring|array$name变量名*@parammixed$default默认值*@paramstring|array$filter过滤方法*@returnmixed*/publicfunctionpatch($name='',$default=null,$filter=null){return$this->put($name,$default,$filter);}//同上的patch/***获取request变量*@paramstring$name数据名称*@paramstring$default默认值*@paramstring|array$filter过滤方法*@returnmixed*/publicfunctionrequest($name='',$default=null,$filter=null){//请求参数if(empty($this->request)){$this->request=$_REQUEST;}if(is_array($name)){$this->param=[];return$this->request=array_merge($this->request,$name);}return$this->input($this->request,$name,$default,$filter);}/***获取session数据*@accesspublic*@paramstring|array$name数据名称*@paramstring$default默认值*@paramstring|array$filter过滤方法*@returnmixed*/publicfunctionsession($name='',$default=null,$filter=null){//session字段if(empty($this->session)){$this->session=Session::get();}//设置session字段if(is_array($name)){return$this->session=array_merge($this->session,$name);}//数组赋值组合返回一气呵成这个倒是不错,哈哈return$this->input($this->session,$name,$default,$filter);}/***获取cookie参数*@accesspublic*@paramstring|array$name数据名称*@paramstring$default默认值*@paramstring|array$filter过滤方法*@returnmixed*/publicfunctioncookie($name='',$default=null,$filter=null){//cookie参数if(empty($this->cookie)){$this->cookie=$_COOKIE;}if(is_array($name)){return$this->cookie=array_merge($this->cookie,$name);}return$this->input($this->cookie,$name,$default,$filter);}//同上类似/***获取server参数*@accesspublic*@paramstring|array$name数据名称*@paramstring$default默认值*@paramstring|array$filter过滤方法*@returnmixed*/publicfunctionserver($name='',$default=null,$filter=null){//获取server参数if(empty($this->server)){$this->server=$_SERVER;}if(is_array($name)){return$this->server=array_merge($this->server,$name);}return$this->input($this->server,false===$name?false:strtoupper($name),$default,$filter);}//同上/***获取上传的文件信息*@accesspublic*@paramstring|array$name名称*@returnnull|array|\think\File*/publicfunctionfile($name=''){if(empty($this->file)){$this->file=isset($_FILES)?$_FILES:[];}//如果为空,获取全部信息if(is_array($name)){return$this->file=array_merge($this->file,$name);}//信息拼合$files=$this->file;//文件暂存处理if(!empty($files)){//处理上传文件$array=[];foreach($filesas$key=>$file){if(is_array($file['name'])){//如果是多文件上传$item=[];$keys=array_keys($file);$count=count($file['name']);for($i=0;$i<$count;$i++){if(empty($file['tmp_name'][$i])){continue;}$temp['key']=$key;foreach($keysas$_key){$temp[$_key]=$file[$_key][$i];}$item[]=(newFile($temp['tmp_name']))->setUploadInfo($temp);}$array[$key]=$item;}else{if($fileinstanceofFile){//如果是单独的上传文件$array[$key]=$file;}else{if(empty($file['tmp_name'])){continue;}$array[$key]=(newFile($file['tmp_name']))->setUploadInfo($file);}}}if(strpos($name,'.')){//如果文件名的格式比较特殊list($name,$sub)=explode('.',$name);}if(''===$name){//如果文件名//获取全部文件return$array;}elseif(isset($sub)&&isset($array[$name][$sub])){//设置return$array[$name][$sub];//返回子}elseif(isset($array[$name])){return$array[$name];}}returnnull;//默认返回空}/***获取环境变量*@paramstring|array$name数据名称*@paramstring$default默认值*@paramstring|array$filter过滤方法*@returnmixed*/publicfunctionenv($name='',$default=null,$filter=null){//获取环境变量if(empty($this->env)){//如果为空$this->env=$_ENV;}if(is_array($name)){return$this->env=array_merge($this->env,$name);}return$this->input($this->env,false===$name?false:strtoupper($name),$default,$filter);}//同上的其它方式