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()
方法。