【发布时间】:2019-12-17 15:26:48
【问题描述】:
我访问的网站失败了
致命错误:'break' 不在
FILE的'loop' 或'switch' 上下文中N行
查看源代码(通过文件名/路径找到 - 它是一些开源代码的旧版本)显示 许多 函数类似于此:
class Clazz {
// stuff
public static function foo($bar) {
// some code without loops/return
return 'baz';
break; // This is line N
}
}
现在我知道 break 在循环或切换上下文 was allowed in PHP 5 but is no longer since PHP 7 之外,因此会出现错误消息。
我的问题是:你为什么要在退货后加上break?这是/是一些(过时的)成语吗?
我现在在多个不同代码库的多个函数中发现了这种模式;所以对我来说,这似乎不是重构或对单个开发人员的误解的“遗留物”..?
【问题讨论】:
-
这对我来说也毫无意义。很奇怪。
-
你确定它不是像
if (x) return; break;这样的返回是有条件的并且可能会被跳过吗?如果不是,那么据我所知,代码永远不会有意义。这些代码库有哪些?如果他们都是您工作的本地人,则可能是一名(奇怪)员工的工作。 -
这是多余的代码。但是编译器并没有将其视为错误。我想因为它是可执行的很长时间,所以每个人都离开了它。
-
@treyBake - 不,这里的返回(据说)不会出现在条件之后,所以它总是执行。在您的链接中,返回可能不会执行,问题是返回本身是否足以退出函数。