版权声明:本文为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
变量