我有一个以下形式的开关:
switch ($action) {
case 'saveTemp':
break;
case 'save':
break
}
我希望能够像这样在休息时有条件:
switch ($action) {
case 'saveTemp':
if ($skipbreak) {
break;
}
case 'save':
break
}
简单来说,当$skipbreak == true
我希望代码通过saveTemp案例落入保存案例时。
有可能吗?
感谢。
答案 0 :(得分:1)
if(!$skipBreak)
break;
您应该考虑使用if-else
块而不是switch
语句。见When to use If-else if-else over switch statments and vice versa
答案 1 :(得分:1)
很可能你不会做我要告诉你的事情。至少不会有一段时间,然后当你再次回顾你的这个问题时(偶然),你会意识到我的答案是正确的。
如果块在开关块内部,则不要嵌套,甚至不要将开关块嵌套在开关块内。两者都是代码气味,表明您的代码违反了SRP(单一责任原则)。这意味着代码的这一特定部分会同时负责太多不同的事情。
在代码层次结构中上升一级或多个级别,找到可以将某些任务删除到特定功能的位置。也许你意识到你需要在一个类中封装一组函数。突然之间,您意识到您不再需要嵌套控制块了。
如果您使用PHPLOC或类似的度量工具,您还会发现代码的圈复杂度会随着您按照建议进行重构而下降,您也可能会看到性能提升。
答案 2 :(得分:0)
您还可以将开关盒嵌套在开关盒中,如下所示:
$action = 'saveTemp'; // Example using saveTemp
$skipbreak = TRUE; // Example using TRUE
switch ($action) {
case 'saveTemp':
switch ($skipbreak) {
case TRUE:
echo 'this is True';
break;
case FALSE:
echo 'this is FALSE';
break;
}
break;
case 'save':
echo 'this is save';
break;
}