首页  >  文章  >  后端开发  >  关于PHP5.3中加入的goto语句的详解

关于PHP5.3中加入的goto语句的详解

黄舟
黄舟原创
2017-06-25 13:33:082269浏览

在“转到”直出的ASM或任何其他汇编语言。 这里有一个链接: 我想知道:什么可以做这个,使我的代码更我怎么能在这个较大的项目,没有振作起来。 由于goto语句可以让你来回跳转,偶然的,无限循环等待,如果这种情况发生了错误的方式。 可以在一个这样的例子? 编辑:好吧,我见过的答复 CodeGo.net,显然广泛存在有关的“GOTO”,它是坏的。 所以我一直在想:为什么PHP的trouble将其添加到该语言。如果他们在里面没有看到,他们不会做...为什么? 另外:一个在这里的StackOverflow一般约“转到” EDIT2:看作为这个问题引起了很多不好的事情要难过我去,问我父亲的跳转。他是52岁,是一名工程师。他一对夫妇,他在他的日子,大多在FORTRAN和COBOL编程做了一个良好的数额。如今他做IT服务,服务器及与此类。 无论如何,他说那些关于“回到我的天......” 在那之后了一下,他回转到说,甚至早在他的日子,作为一名学生,他们遗撼知道这是不是一个聪明的想法,但他们没有更好的当时的情况。 TRY / CATCH还是几年的时间和错误处理几乎excisted。 所以你做了检查您的程序是什么?在末尾加上几行,让您打印输出,你需要检查你的代码的一切,然后你把台词:“转到打印;”,或类似的,开始你的数据的打印。 并以这种方式,你慢慢调试你的代码。 他同意转到在现代编程世界的是他找到合理的是一个“紧急中断”,在调试和意外情况。有点像goto fatal_error;,并为你的代码“是fatal_error”部分做的事情,向您展示了深入的结果。但是,只有在创造的最终产品应该不会有跳转- 晚编辑:另一种在PHP5.3/PHP6关于“转到”

1. 如果你正在编写好的PHP代码,您应该不需要跳转。我认为这是一个错误,他们正在将它添加在,因为它只是导致懒惰编程。 看 对于一个好的上又增加了这一到PHP,而且,这里的堆栈溢出, 
2. 我只发现过的goto: 打出来的嵌套循环。但大多数新的语言必须做到这一点没有goto反正(break d80b5def5ed1be6e26d91c2709f14170在PHP中 CodeGo.net,或者break 67be473e3e4c8b68286aa956d361c780在Java中,等等)。 去到一个函数的末尾清理部分。但是再次,这不是在一个垃圾收集的语言。 换句话说,如果你不知道你是否goto你不应该。 
3. 有没有这样的事情作为跳转。 也许,只是也许,它可能走出多重嵌套循环,但你已经可以做“破2”,这样的。标记符在Java中一样会比转到更好地为这一目的。 也许是与代码编写异常,当你需要跳到一堆一次其中一个发生故障的结尾。但是,这只是固定蹩脚的代码更蹩脚的代码。 
4. 它可用于调试目的,因此您不必出或代码重构块只是为了临时改变了工作线程。 
5. 在经典的VB编码,使用goto是很方便的用于仿真的try / catch错误处理是这样的:

Function MyFunction() as String
'-- start of error block
'
 On Error Goto Catch
 ' do something here that might cause an error
 MyFunction = "IT WORKED"
 Exit Function
 Catch:
 ' error occured - do something else
 MyFunction = Err.Description
 '
 '-- end of error block
End Function
...这里是一种模拟的try / catch /终于..Function MyFunction() as String
'-- start of error block
'
 On Error Goto Catch
 ' do something here that might cause an error
 MyFunction = "IT WORKED"
 Goto Finally
 Catch:
 ' error occured - do something else
 MyFunction = Err.Description
 Err.Clear
 Finally:
 ' put your finally code here
 '
 '-- end of error block
End Function

它也可以用于清除在函数的结尾,虽然我想你可以做另一个函数可以被调用来做到这一点的清理情况。 说实话,我从来没有在PHP中,我心想:“嗯,我希望能有一个goto我没有对他们为什么决定做这个读了,可是,那些家伙都是非常聪明,并有机会考虑到PHP的非常好的方向,到目前为止,所以也许正期待有必要,我们不知道呢。 
6. 对我具有在语言使用goto看到的是跨语言能力的端口。我写在C语言的解析器生成器生成解析器与goto语句(它比更理智的控制结构更容易使用goto),现在将它移植到PHP是没有那么多头疼的。 
7. 编写有限状态机的时候,goto是。当解析上下文释放你确实需要其中的一个。虽然我们可以生活在没有跳转,如果continue $case;是一个switch块中的有效跳转到一个不同的情况和关闭过程中有案范围尽可能多的语言时下有。在那之前,我们几乎套牢的goto。 
8. 跳转可以帮助减少代码重复的堆栈展开,在下面的伪代码:

do A
if (error)
 goto out_a;
do B
if (error)
 goto out_b;
do C
if (error)
 goto out_c;
goto out;
out_c:
undo C
out_b:
undo B:
out_a:
undo A
out:
return ret;

(伪由罗伯特爱,从linux内核归档的邮件列表采取代码:) 
9. 由于之前已经说过,GOTO是唯一真正需要的类型的算法,通常是那些在语言解析或有限状态机。我从来没有错过在PHP缺乏goto语句。 OTOH,我有一个语言,其中只有两个结构是函数和条件goto方法:SNOBOL4。由于意大利面条代码的风险是如此之高,最SNOBOL4是/很小心的避免这一点。但是goto语句也使很紧的编程,创意循环执行等。它实际上是更容易做到的FSM型圈,如果你有在使用goto。 
10. 我承认我转到我的代码。 :) 唯一的理由似乎有利于在最短的flyway从其他语言到PHP(实际上只改变语言不碰控制结构)和重构代码的移植的第2阶段。 我个人认为和同事,因为他们可以避开有条件决裂-S的循环,他们将能够抵御转到诱惑。
11. 生成的代码可以使goto语句,我猜。对生成的代码的好处是,你并不需要去维护它-你只是重新生成它。 
12. goto真正应该尽管这是在语言,并会进行过时由于更好的编程实践。现在添加它似乎是一个倒退的一步。 
13. goto语句中的B大优势就是学习曲线。人们不禁要问,为什么像visualstudia和Mac电脑的工具做的很好。原因是,人们需要的不仅仅是一个伟大的产品,他们希望有一个 伟大的产品,他们可以在短短一个小时左右学习。现在很多 一个天只计划为他们的工作之一。我看到这么多的书说,一个人永远不能 使用goto语句,然后给五年左右的技术,例如,他们说每消除 需要它。我说,只是事实,5是该有多好转到证明 是!!我没有教的五件事,包括异常结构, 把整个章节来解释!!当你真正需要的是一个简单的跳转 可在30秒内进行解释。当然,你可以创建恶意代码与他们如果 希望---但是,嘿,最不想写糟糕的代码,如果他们 他们才可以呢。最goto语句在我们的实验室所做的代码简单 了解和学习;程度远远超过了读一本2000页的书。

以上是关于PHP5.3中加入的goto语句的详解的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn