获取请求参数
获取请求参数的方式从类型上看,分为1. 请求对象获取
、2. 助手函数直接获取
两种形式。
请求对象获取
官方解释
当前的请求对象由think\Request类负责,在很多场合下并不需要实例化调用,通常使用依赖注入即可。
在其它场合(例如模板输出等)则可以使用think\facade\Request静态类操作。
获取方式
1. 继承了think\Controller
直接使用$this->request()->param('请求参数key')
2. 依赖注入
1)构造函数注入
步骤:
1)引用think\Request类;
2)构造函数依赖注入,并将think\Request实例保存为类属性;
3)index操作方法调用类属性获取实例对象,再调用param()方法获取请求参数。
use think\Request;
class Index
{
protected $request;
public function __construct(Request $request)
{
$this->request = $request;
}
public function index()
{
return $this->request->param('name');
}
}
2)操作方法注入
步骤:
1)引用think\Request类;
2)操作方法依赖注入,直接使用think\Request实例的方法获取请求参数。
use think\Request;
class Index
{
public function index(Request $request)
{
return $request->param('name');
}
}
#### 扩展部分
实际上,我们还可以直接使用 $request->参数key 的形式直接获取变量。
3. Facade调用
Facade可以让类无需实例化而直接进行静态方式调用。
实际上Facade做的事情就是创建一个代理类,在调用Facade的时候, 间接调用原来的类,然后使用类方法。
步骤:
1)引用think\facade\Request类,此时Request实际上就是think\Request类,并且可以静态调用原来的类方法;
2)静态调用param()方法获取请求参数。
<?php
use think\facade\Request;
class Index
{
public function index()
{
return Request::param('name');
}
}
4.助手函数
request()->param('参数key')
class Index extends Controller
{
public function index()
{
return request()->param('name');
}
}
助理函数获取
input('参数key')
input('param.参数key')
input('post.') // 获取全部post变量
input('get.') // 获取get全部变量
请求参数绑定
参数绑定是把当前请求的变量作为操作方法(也包括架构方法)的参数直接传入,参数绑定并不区分请求类型。
举个例子,路由里面定义下面的路由:
Route::get('api/:version/order/:id','api/:version.Order/getOrderDetail');
上面的路由表示它将接收一个id参数,并且将会把这个id参数传到getOrderDetail()方法。
再来看看getOrderDetail()方法:
public function getOrderDetail($id){
return '我是路由传过来的id参数:' . $id;
}
这便是所谓的参数绑定,按照变量名进行参数绑定的参数必须和URL中传入的变量名称一致,但是参数顺序不需要一致。