美文网首页
33、TP5的请求对象与参数绑定

33、TP5的请求对象与参数绑定

作者: IUVO | 来源:发表于2018-06-04 17:35 被阅读223次

1、请求变量与请求对象的关系?

TP5提供了请求对象,对客户端发送的请求提供统一的接口进行处理,当用户向服务器发出了请求,请求对象就会自动拦截这些请求,调用响应的方法进行处理。
例如GET请求就会调用get()方法,POST请求就会调用post()方法,如果是cookie或者session就会调用各自对应的方法。
这些请求方法会自动过滤掉非法请求,使得发送到服务器端的请求更加的安全可靠。

那么什么是请求变量呢,我们来通过一个小案例的演示说明一下,修改默认模块默认控制器Index的内容:

class Index
{
    public function index()
    {
        return '<h2>快来和我一起学习TP5</h2>';
    }
    public function hello($name,$lesson)
    {
        return 'Hello '.$name.' ,欢迎和我一起学习'.$lesson.'课程';
    }
}

访问url为:http://tp5.com/index/index/hello/name/Mike/lesson/TP5,其中MikeTP5就是请求变量,所以说请求变量就是请求对象处理的一个目标,但是请求对象不仅仅可以处理请求变量,它可以处理一切与用户请求相关的数据。


get()

新增一个新的方法:

public function demo($id='',$name='',$age=18)
{
  $request = \think\Request::instance();//获取请求对象实例,将请求对象类实例化
  dump($request->get());//调用请求对象的get()获取url中的get请求的请求变量,get方法参数为空则获取url中所有请求变量
}

现在我们将url的参数传递方式改成get方式:

http://tp5.com/index/index/demo?id=123&name=alice&age=28

结果输出了所有url中的get请求的所有请求变量。


post()

我们再来尝试获取POST请求的所有请求变量,把请求对象调用的方法改成post即可:dump($request->post());,这里我图方便,用Postman来请求:

POST请求
也能正常输出了所有url中的post请求的所有请求变量。
param()

为了简化请求变量的获取,系统还提供了param()方法来获取所有请求方式的请求变量,包括getpostPATH_INFO类型,很简单,修改请求对象调用param()方法即可:dump($request->param());
然后用各种方式去请求,发现都能正常输出了所有请求变量。

get()post()param()参数都可以为想要获取到的请求变量的名称。


has()

为了判断url请求中是否存在某个请求变量,系统还提供了has()方法,返回值为布尔值,即存在某个请求变量为true,反之为false

2、请求信息包括哪些?

其实我们通过请求对象获取的请求信息是非常多的,主要有以下几种:

a. 和url相关:

例如获取域名:

dump($request->domain()); //获取域名

例如获取url

dump($request->url()); //获取url,默认不包含域名,如果要包含域名,则需要传入参数true

例如获取PATH_INFO

dump($request->pathinfo()); //获取pathinfo

例如获取url后缀:

dump($request->ext()); //获取url后缀

b. 和MCA相关;

例如获取模块:

dump($request->module()); //获取模块

例如获取控制器:

dump($request->controller()); //获取控制器

例如获取操作:

dump($request->action()); //获取操作


我们除了可以查看MCA信息之外,还可以设置,比如说我们将当前操作重新设置一下:
$request->action('test'); //设置操作为test

同理,除了操作可以设置,模块、控制器都能重新设置,方法也是一样的,就不演示了。


c. 和请求的方法类型相关;

我们还能检测请求的方法类型:

dump($request->method()); //获取请求变量的类型,输出string(3) "GET"

我们还能检测请求的IP:

dump($request->ip()); //获取请求的IP,输出string(7) "0.0.0.0"

我们还能检测请求的IP:

dump($request->ip()); //获取请求的IP,输出string(7) "0.0.0.0"

除了可以获取以上请求变量以外,请求变量还支持对请求变量的限定和排除:

dump($request->only('id')); //限定仅获取请求变量id
dump($request->except('id')); //获取除了请求变量id之外的其他变量

3、如何通过参数绑定来简化请求的URL地址呢?

默认url的参数是按名称成对解析,所以需要写上参数名:

http://tp5.com/index/index/demo/id/123/name/alice/age/28

但是,还有另一种配置是按顺序解析,这个需要先配置url_param_type配置项的值为1,即按顺序解析。

那么url就可以简化为:

http://tp5.com/index/index/demo/123/alice/28

相关文章

  • 33、TP5的请求对象与参数绑定

    1、请求变量与请求对象的关系? TP5提供了请求对象,对客户端发送的请求提供统一的接口进行处理,当用户向服务器发出...

  • Spring注解

    @ModelAttribute1.绑定请求参数到命令对象:放在功能处理方法的入参上时,用于将多个请求参数绑定到一个...

  • 四、Spring MVC pojo

    使用 POJO 对象绑定请求参数值 Spring MVC 会按• 请求参数名和 POJO 属性名进行自动匹配,自动...

  • TP5的请求对象与数据绑定.md

    1、请求变量与请求对象的关系? url为: 其中,name和lesson就是请求变量。请求变量就是请求对象处理的一...

  • thinkphp5学习笔记(四)控制器

    控制器类 Controller.php 公共操作与公共类 控制器前置操作 页面跳转与重定向 请求对象与参数绑定 请...

  • 使用pojo对象绑定请求参数

    Spring MVC 会按请求参数名和POJO属性名自动匹配,自动为该对象填充属性值,支持级联属性如:dept.d...

  • Spring ModelAttribute注解

    Spring ModelAttribute注解,主要有三个作用: 1. 注解在参数上。 绑定请求参数到命令对象,并...

  • springMVC2

    请求与响应 参数绑定 可以被注入的类型: HttpServletRequest, HttpServletRespo...

  • springMVC请求参数的绑定

    第3章 请求参数的绑定 1 绑定说明 1.1 绑定的机制 我们都知道,表单中请求参数都是基于 key=value ...

  • 使用 POJO 对象绑定请求参数值

    SpringMVC 会按请求参数名和POJO属性名进行自动匹配,自动为该对象填充属性值。支持级联属性

网友评论

      本文标题:33、TP5的请求对象与参数绑定

      本文链接:https://www.haomeiwen.com/subject/ocpssftx.html