我有这个if else结构,我想重构其他因为我想清理一下代码。只有我不确定如何重构其他内容。
if ($validator->fails()) {
return Redirect::back()
->with('error_code', 5)
->withErrors($validator->errors())
->withInput();
} else {
// do something if validator does not fail
return Redirect::back();
}
任何人都知道如何重构其他内容?
非常感谢提前!
答案 0 :(得分:4)
在这种情况下,你甚至不需要else语句,因为你的IF中有一个返回。如果验证失败,它将返回并且永远不会到达Redirect::back();
所以像这样使用它:
if ($validator->fails()) {
return Redirect::back()
->with('error_code', 5)
->withErrors($validator->errors())
->withInput();
}
return Redirect::back();
答案 1 :(得分:2)
如果您希望在方法结束时只有一个返回点:
$back = Redirect::back();
if ($validator->fails)) {
$back->with('error_code', 5)
->withErrors($validator->errors())
->withInput();
}
return $back;
答案 2 :(得分:1)
如果您想尽可能地减少它,您还可以删除if语句的括号。在PHP和许多其他语言中,如果语句中有单行执行,则可以删除括号。
所以缩小版将是:
if ($validator->fails())
return Redirect::back()
->with('error_code', 5)
->withErrors($validator->errors())
->withInput();
return Redirect::back();
您还可以使用Ternary Operator以下列方式重写它:
return $validator->fails() ? Redirect::back()->with('error_code', 5)->withErrors($validator->errors())->withInput() : Redirect::back();
最后,我想指出编写代码的最佳方法不一定是尽可能地缩小编写代码。我上面使用三元运算符的例子就是一个很好的例子,它真的能让它更具可读性吗?否。
应该重构这种类型的语句,以便更容易查看和读取语句实际执行的操作。在原始示例中拥有else {}
方式并不一定是坏事。