请求参数传null,默认值无效问题
平时有如下写法:
$type = $request->input('type', 2);
没值的时候,想有个默认值,但只有前端不传type字段,才有默认值,如果前端传了type=null,那么这个默认值2是不生效的,得到的type是null。
所以我每次默认值不得不采用如下写法:
$type = $request->input('type') ?? 2;
请问大家有更优雅的处理方法吗?
补充一点:自家前端使用的场景下,可以要求前端没值就不传该字段没错。但我经常对接第三方API,第三方API回调传数据的时候,一个字段没有值,他们就是传null的,挺多公司的API都是这个情况,所以有时候同事问我,->input()第二个参数可以设置默认值啊,你为什么不用,我又解释一遍为什么,挺尴尬的,就想问问大家有没有更优雅的处理方法,比如在laravel框架某个地方统一设置一下。
关于 LearnKu
自己写一个方法呗,省事儿
只能自己再包装一层
你只是为了值为null的时候用默认值,?? 为什么不行你觉得不优雅什么的。两个方法都要写默认值 你重新定义一个方法就不用传默认值?请不要优雅过头了
@4pmzzzzzzzzzz 别人看到总会感到奇怪,问input支持默认值啊,你为什么写外面去,情况就是这么个情况
@忆往昔弹指间 你非要自己封装一个的话
在
AppServiceProvider里boot方法不是支持默认值 你看下源码,不是不存在或者为null是返回默认,是不存在才返回默认值。
@4pmzzzzzzzzzz 源码那里我知道,其实关于null应认定为有值还是无值,在社区一直是有争议的,我个人是站在认定为无值那一派的,像env()、config(),也是认为null是无值的,我认为应该统一
你写的已经蛮优雅的了