#### 属性注入
除了使用参数绑定之外,我们还可以直接把变量注入到当前请求对象里面,例如:
~~~
<?php
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
// 控制器初始化方法
protected function _initialize()
{
// 绑定请求对象的属性
request()->name = request()->param('name');
}
public function hello()
{
return request()->name;
}
}
~~~
这里在控制器的初始化方法中进行属性注入只是为了方便说明,其实属性注入的代码可以放到其它的公共文件或者行为里面执行(只要在操作方法调用之前被执行),不影响注入属性的获取。
属性注入的变量类型没有任何限制,你完全可以注入数组或者对象类型的变量,路由的模型绑定功能正是利用了该特性。
是否需要使用请求对象属性注入功能完全看应用需求,属性注入相比较参数绑定似乎还麻烦一些,不过有一个明显的优势就是属性注入是在整个请求的生命周期内在任何地方都可以获取(别忘了请求对象是单例的),而参数绑定只能在操作方法中使用。