讨论数量:
看看能不能进行归类使用switch
php8以上可以改用match
我也是最近才改过来的,可以省很多东西
switch
if ( in_array($order->status,[4,5,9,10])){
switch($order->status){
case 4:
$msg = '当前订单已完成,订单不可取消!';
break;
case 5:
$msg = '取消订单已完成,不可重复取消!';
break;
case 9:
$msg = '商品返回途中,暂时不可取消!';
break;
case 10:
$msg = '订单商品已返还,订单不可取消!';
break;
default:
$msg = '订单状态异常,请刷新后再试!';
}
return response()->json(['status'=>'error', 'code'=>1,'msg'=>$msg]);
}
match
if (in_array($order->status,[4,5,9,10])){
$msg = match ($order->status) {
4 => '当前订单已完成,订单不可取消!',
5 => '取消订单已完成,不可重复取消!',
9 => '商品返回途中,暂时不可取消!',
10 => '订单商品已返还,订单不可取消!',
default => '订单状态异常,请刷新后再试!',
};
return response()->json(['status'=>'error', 'code'=>1,'msg'=>$msg]);
}
很正常的,写多了自己就知道怎么优化了,楼上说的switch php8的match也是一种方式, 有的也可以用return、异常的方式终止向下执行减少if层级, 楼上的switch的写法也还好 我一般会定义常量类用于定义各种类型啥的,比如
if 嵌套的层次尽可能不要超过三层, 否则代码的可读性性很差, 不利为维护
if中逻辑复杂的话 可以考虑 <多态> 重构下代码
if中逻辑简单的话 说明你应该优化逻辑代码, 比如switch替换if, if中是否有重复的判断,php语法规则(三联运算符等)
推荐文章: