PHP 和要在 PHP 5.3 中添加的 goto 语句

2022-08-30 21:56:53

“goto”语句直接来自 ASM 或任何其他汇编语言。

这是一个链接:http://be2.php.net/manual/en/control-structures.goto.php

我想知道:这能使我的代码更有条理?我如何在更大的项目中实现这一点,而不会搞砸它。由于goto将允许您来回跳跃,因此如果您以错误的方式使用它,则意外分配和无限循环正在等待发生。

有人能给我一个很好的例子吗?

编辑:好吧,我已经看到了一些回复,显然对使用“goto”语句及其不好存在广泛的共识。

所以我仍然想知道:为什么PHP会费心将其添加到语言中。如果他们没有看到其中的东西,他们就不会这样做......那么为什么呢?

另外:StackOverflow上关于“goto”的一般讨论

编辑2:看到这个问题引发了很多不好的事情对goto陈述感到悲伤,我去问我父亲。他今年52岁,是一名工业工程师。
他告诉我几次,他在他的日子里做了大量的编程,主要是在FORTRAN和COBOL中。如今,他从事IT服务,服务器和网络管理等。

无论如何,他说了一些关于“回到我的时代......”
在讨论了一会儿之后,他又回到了goto声明,说即使在他还是学生的日子里,他们也都知道使用它不是一个聪明的主意,但他们当时并没有好多少。尝试/捕获仍然需要数年时间,并且几乎没有删除错误处理。
那么你做了什么来检查你的程序呢?在末尾添加几行,允许您打印输出和签入代码所需的所有内容,然后放置行:“goto printing;”或类似的东西,以开始打印数据。

通过这种方式,您逐步调试了代码。

他同意在现代编程世界中使用goto是相当无用的。他认为唯一合理的用途是“紧急中断”,用于极端调试和意外情况。有点像 ,并让代码的“fatal_error”部分做一些事情来向你展示深入的结果。
但只有在创造某些东西的时候。成品不应该有套数语句。goto fatal_error;

后期编辑:关于 PHP5.3/PHP6 中“goto”的另一个讨论


答案 1

如果你正在编写好的PHP代码,你不应该使用goto。我认为他们添加它是一个错误,因为它只会导致懒惰编程。

http://www.procata.com/blog/archives/2004/07/29/goto-in-php/

有关将其添加到PHP的良好评论,以及此处的堆栈溢出,

GOTO仍然被认为是有害的?


答案 2

我只发现两种用途:goto

  1. 打破嵌套循环。但是大多数较新的语言都有一种机制,可以在没有任何东西的情况下做到这一点(在PHP中,或者在Java中等)。gotobreak <number>break <loop label>
  2. 转到函数末尾的清理部分。但同样,这在垃圾回收语言中通常没有用。

换句话说,如果你不知道你是否应该用于某些东西,你就不应该。goto


推荐