首頁 >後端開發 >php教程 >關於PHP5.3中所加入的goto語句的詳解

關於PHP5.3中所加入的goto語句的詳解

黄舟
黄舟原創
2017-06-25 13:33:082301瀏覽

在「前往」直出的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的非常好的方向,到目前為止,所以也許正期待有必要,我們不知道呢。語言
的解析器產生器產生解析器與goto語句(它比更理性的控制結構更容易使用goto),現在將它移植到PHP是沒有那麼多頭痛的。 #7. 寫有限狀態機的時候,goto是。有效跳到一個不同的情況和關閉過程中有案範圍盡可能多的語言時下有。下面的偽代碼:

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