Laravel中$req->param与$req->input('param')的区别及优劣对比
Laravel中
$req->input('param')与$req->param的区别及选型建议 核心区别
虽然两者在获取普通顶层请求参数时结果一致,但存在以下关键差异:
- 默认值支持:
$req->input('param', '默认值')可直接为不存在的参数设置默认值;而$req->param在参数不存在时返回null,若要设置默认值需额外使用??语法,比如$req->param ?? '默认值'。 - 嵌套参数处理:
input()支持点语法直接获取嵌套数组参数,例如请求中存在user[name]时,可通过$req->input('user.name')直接拿到用户名;而属性访问需先获取数组再取值,即$req->user['name'],直接写$req->user.name会触发字符串拼接错误。 - 底层实现逻辑:
$req->param是通过Laravel Request类的魔术方法__get实现的,底层最终还是调用了input()方法;但属性访问无法直接传递默认值参数,这是两者最直观的功能差异。
选型建议
- 若只需获取简单的顶层参数且不需要默认值,
$req->param写法更简洁,代码可读性更高。 - 若需要设置默认值、处理嵌套参数,或者希望明确表达“获取请求参数”的意图,使用
$req->input('param')更合适。 - 团队开发时建议统一规范,避免混合使用导致代码风格不一致。
内容的提问来源于stack exchange,提问作者Tio Ajc
相关产品推荐
相关产品推荐

