哪些路由參數訪問速度更快?從$this->getRequest()->get('param')
symfony2獲取路由參數(控制器參數vs請求)
- 認沽路由參數作爲控制器參數
- 獲取路由參數又是怎麼回事請求對象?更好的方法是把請求對象作爲控制器參數或者在控制器對象上調用
getRequest()
方法?
哪些路由參數訪問速度更快?從$this->getRequest()->get('param')
symfony2獲取路由參數(控制器參數vs請求)
getRequest()
方法?有人可能會爭辯說,因爲你需要從容器中提取對象Request
這是一種較慢的方法,但是我已經完成了這兩者,差異可以忽略不計。當你需要Request
對象時,最好把它作爲控制器方法的參數,因爲你會立即得到它,而且PHP Type Hinting會在體面的IDE中提供額外的信息(自動完成等等)(我個人推薦PHPStorm)。這也適用於其他控制器方法的參數,你會得到直接的變量,不需要從其他地方拉兩次。
class SthController extends Controller
{
public function indexAction(Request $request, $arg1, $arg2)
{
// you have $request object with type hint and all goodness
}
}
我想你應該使用getRequest()方法,因爲它更加動態!
'getRequest()'只是'$ this-> container-> get('request')'的快捷方式,但從操作參數中獲取Request對象應該是首選的DI方法。 實際上,如果您將控制器用作服務,則不存在'getRequest()'方法。 – 2015-01-20 13:49:20
Thx。那麼怎麼樣將參數從控制器傳遞到樹枝模板 - 哪種方式可以更快地傳遞來自控制器的參數,或者通過'{{app.request.get('name')}}'獲取樹枝模板中的參數? – NHG 2013-03-20 12:47:07
至於性能,同樣的規則適用('app.request.get'直接翻譯成'$ container-> get('request') - > get('name')')。但是對於編碼風格,你不應該依賴'app'變量,因爲它在所有情況下都不可用(嘗試使用ESI,模板包含或者幾個月前將以與我相同的位置結束) - 最好的方法是在渲染模板請求之前發送需要計算的所有數據。 – 2013-03-21 07:36:51