【TP5 :请求】参数绑定

版权声明:本文为ywcmoon原创文章,未经允许不得转载。 https://blog.csdn.net/qq_39251267/article/details/82665658

参数绑定

方法参数绑定是把URL地址(或者路由地址)中的变量作为操作方法的参数直接传入

操作方法参数绑定

按名称绑定

参数绑定方式默认按照变量名进行绑定

按照变量名进行参数绑定的参数必须和URL中传入的变量名称一致,但是参数顺序不需要一致

1//给 Blog 控制器定义 read 和 archive 方法,read 操作需要指定一个 id 参数,archive 方法需要指定年份(year)和月份(month)两个参数

namespace app\index\Controller;

class Blog 
{
    public function read($id)
    {
        return 'id='.$id;
    }

    public function archive($year='2016',$month='01')
    {
        return 'year='.$year.'&month='.$month;
    }
}
//上例对应的URL访问地址分别是

http://serverName/index.php/index/blog/read/id/5

http://serverName/index.php/index/blog/archive/year/2016/month/06

输出结果:
id=5
year=2016&month=06

url中的参数分别对应操作方法里的同名参数,既同名参数绑定

获取url中的参数,输出为

同名参数绑定顺序不需要一致

按顺序绑定

配置文件

// URL参数方式改成顺序解析
'url_param_type'         => 1,
2//修改url中year和month参数值的顺序
http://serverName/index.php/index/blog/archive/06/2016

输出结果:
year=06&month=2016

按顺序绑定参数,操作方法的参数只能使用URL pathinfo变量,而不能使用get或者post变量

参数绑定有一个特例,操作方法中定义有Request对象作为参数,无论参数位置在哪里,都会自动注入,而不需要进行参数绑定

架构方法参数绑定(V5.0.1)

当前请求的路由变量可以自动绑定到架构函数的参数,

namespace app\index\Controller;

class Blog 
{
    protected $name;
    public function __construct($name = null)
    {
        $this->name = $name;
    }
}

如果访问

http://localhost/index/index/index/name/thinkphp

当前请求路由变量name,则thinkphp会自动传入架构方法里的name变量

猜你喜欢

转载自blog.csdn.net/qq_39251267/article/details/82665658