Php symfony2获取路由参数(控制器参数与请求)

Php symfony2获取路由参数(控制器参数与请求),php,symfony,parameters,routing,controller,Php,Symfony,Parameters,Routing,Controller,哪个访问路由参数更快 将路由参数作为控制器参数 从$this->getRequest()->get('param') 那么请求对象呢?更好的方法是将请求对象作为控制器参数,或者对控制器对象调用getRequest()方法?有人可能会认为,由于需要从容器中提取request对象,这是一种较慢的方法,但我已经完成了这两种操作,差别可以忽略不计。当您需要Requestobject时,最好将其作为控制器方法参数,因为您将立即获得它,PHP类型提示将在体面的IDE中提供额外的信息(自动完成等)(我个人推荐

哪个访问路由参数更快

  • 将路由参数作为控制器参数
  • $this->getRequest()->get('param')

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

    有人可能会认为,由于需要从容器中提取
    request
    对象,这是一种较慢的方法,但我已经完成了这两种操作,差别可以忽略不计。当您需要
    Request
    object时,最好将其作为控制器方法参数,因为您将立即获得它,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()方法,因为它更具动态性

    Thx。那么把参数从控制器传递到细枝模板呢?哪种方法更快?从控制器传递参数,或者通过
    {app.request.get('name')}}
    在细枝模板中获取参数?至于性能,同样的规则也适用(
    app.request.get
    直接转换为
    $container->get('request')->get('name')
    )。但是对于编码样式,您不应该依赖于
    app
    变量,因为它并非在所有情况下都可用(尝试使用ESI、template includes等进行实验,结果将与我几个月前的情况相同)-最好的方法是发送渲染模板请求之前需要计算的所有数据。
    getRequest()
    只是
    $this->container->get('request')
    的快捷方式,但从操作参数获取请求对象可能是首选的DI方法。事实上,如果将控制器用作服务,则没有
    getRequest()
    方法。