Symfony2获取路由参数(控制器参数vs请求)


symfony2 getting route parameters (controller arguments vs request)

哪一个访问路由参数更快?

  1. 将路由参数作为控制器参数
  2. $this->getRequest()->get('param')获取路由参数

那么请求对象呢?更好的方法是将请求对象作为控制器参数或在控制器对象上调用getRequest()方法?

有人可能会争辩说,因为你需要从容器中拉Request对象,这是较慢的方法,但我已经做了,差异是可以忽略不计的。当您需要Request对象时,最好将其作为控制器方法参数,因为您将立即拥有它,并且PHP类型提示将在体面的ide(我个人推荐PHPStorm)中提供额外的信息(自动完成等)。这也适用于其他控制器方法参数,直接给你变量,不需要从其他地方拉它们两次。

class SthController extends Controller
  {
  public function indexAction(Request $request, $arg1, $arg2)
    {
    // you have $request object with type hint and all goodness
    }
  }

我认为你应该使用getRequest()方法,因为它更动态!