Thinkphp 请求和响应
一. Request对象获取方法
1. request() 助手函数获取
2. think\Request 类获取
3.利用框架注入Request对象 Request方法时单利方法 在think框架app类中会被实例化
<?php namespace app\index\controller; use think\Request; class Index { /** * @param Request $request * @return string|void */ public function index(Request $request) { #$request = request(); #$request = Request::instance(); return dump($request); } }
二. Request 对象的使用方法 注Request的param方法获取的值包括post传输的值,使用时尽量使用$request->post('id')这种明确范围的方式
<?php namespace app\index\controller; use http\Params; use think\Request; class Index { /** * @param Request $request * @return string|void * @url http://localhost/news/5.html?name=jiang */ public function index(Request $request) { /* 获取域名 */ dump($domain = $request->domain()); # 返回域名 $domain = http://localhost dump($pathinfo= $request->pathinfo()); # 返回域名和?之间的值 $pathinfo = news/5.html dump($path = $request->path()); # $path = news/5 /* 请求类型 */ dump($method = $request->method()); # 返回请求方法 $method = GET; dump($request->isGet()); #判断是请求的方法类型 是判断的类型返回true 不是返回false dump($request->isAjax()); # /* 请求参数 */ dump($id = $request->get("id")); #get接收的值不包括 pathinfo 部分 这里返回 null dump($id = $request->param('id')); # $id = 5 dump($name = $request->param('name')); # $name = jiang #session("name",'jiangfeilong'); #设置session dump($session = $request->session()); #获取sssion对象 没设置session的化返回空数组 dump($session_name = $request->session("name")); #返回session 的name的值 dump($cookie = $request->cookie()); #获取cookie对象 返回cookie数组 dump($phpSessId = $request->cookie('PHPSESSID')); #返回cookie的sessionId的值 /* 利用助手函数获取url参数 */ dump($id = input('id')); /* 获取模块 控制器 操作 */ dump($module = $request->module()); #获取当前模块 这里时index dump($controller = $request->controller()); #返回当前控制器 这里是 Index类 dump($action = $request->action()); #返回当前操作 这里返回的是index模块的Index类的index()方法 /* 获取 url */ dump($url = $request->url()); #返回 / 之后的 url 这里是 /news/5.html?name=jiang dump($baseUrl = $request->baseUrl()); # 返回 /和?号之间url的部分 这里是 /news/5.html } }
request和input使用filter过滤
语法格式 $reuqest->post('key',100,'过滤函数'); //100为默认值 过滤函数可以自己定义,也可以用Php的 trim intval 等函数
自己定义fillter的使用示例
<?php /* application/index/controller/filter.php */ function change($text ) { $tmp = intval($text); if((!is_int($tmp))){ return 0; } return -$tmp; }
<?php namespace app\index\controller; use http\Params; use think\Request; import('filter',APP_PATH.'common',".php"); class Index { /** * @param Request $request * @return string|void * @url http://localhost/news/5.html?name=jiang */ public function index(Request $request) { dump('request -> '.$request->post('id',100,'intval')); /* 助手函数 */ dump($request->post('id',100,'change')); dump(input('post.name','jiang','trim')); } }