#### 屬性注入
除了使用參數綁定之外,我們還可以直接把變量注入到當前請求對象里面,例如:
~~~
<?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;
}
}
~~~
這里在控制器的初始化方法中進行屬性注入只是為了方便說明,其實屬性注入的代碼可以放到其它的公共文件或者行為里面執行(只要在操作方法調用之前被執行),不影響注入屬性的獲取。
屬性注入的變量類型沒有任何限制,你完全可以注入數組或者對象類型的變量,路由的模型綁定功能正是利用了該特性。
是否需要使用請求對象屬性注入功能完全看應用需求,屬性注入相比較參數綁定似乎還麻煩一些,不過有一個明顯的優勢就是屬性注入是在整個請求的生命周期內在任何地方都可以獲取(別忘了請求對象是單例的),而參數綁定只能在操作方法中使用。