[英]End a php tag without die() or exit()
我想知道PHP是否有一個允許我在進入“?>”標記之前結束進程的函數,例如:
<?php
echo 'first';
endphptag();
echo 'second';
?>
third
<?php
echo 'fourth';
?>
那么輸出應該是:
first
third
fourth
我知道有些人認為這是無用的東西,但我想在iframe上使用驗證腳本而不是使用die
或exit
函數,因為它會殺死整個腳本,我只想結束它的一部分。
通常我使用if - else
代替,但我想避免它們因為進程很大而且我想要更具可讀性的東西,就像我使用的方式if - die
在我的ajax腳本中if - die
而且我想在我的iframe中使用這樣的東西, 謝謝!
好吧,我只是想知道PHP是否已經有一個適當的功能(似乎沒有),所以我想我會留下if - elses,因為不值得使用更多的進程讓它“更具可讀性“(例如:嘗試 - 捕獲使用太多資源,我也不會去。) 我的疑問僅僅是為了那個,我只會在我的ajax文件中使用die函數使用die函數(我不知道是否推薦它,但我認為沒有問題,因為PHP因某些原因應該有它)
例外是您正在尋找的:
try {
// code
} catch (Exception $e) {
// handling
}
你把你的代碼放在try塊中,然后你結束拋出一個異常throw new Exception();
,它只退出try塊內的其余代碼。
您的代碼將是:
<?php
try {
echo 'first';
throw new Exception();
echo 'second';
} catch (Exception $e) {}
?>
third
<?php
echo 'fourth';
?>
我要把它扔到那里然后躲開,但如果你真的需要這樣做,那么goto
實際上並不是一個糟糕的選擇:
<?php
echo 'first';
goto endofblock;
echo 'second';
endofblock:
?>
或者你可以用一個虛循環來避免goto的“邪惡”。 對於編譯器,它們看起來基本相同,但是其他程序員不會因為使用goto
而致死
<?php
do {
echo 'first';
break;
echo 'second';
} while (false)
?>
你為什么不使用開關和箱子?
如果我是你,我會省略end-php標簽。 大多數編碼標准都提出反對意見,原因太冗長,無法在此解釋。
但除此之外,請繼續使用if / else或switch / case控制結構。 從內聯代碼中獲取驗證過程的大部分內容,如果您使用的是OOP,則將它們打包在函數或類方法中。
另見關於GOTO的這個說明;-) http://xkcd.com/292/
PHP解釋器將文件作為一個單元使用, <?php
標記只是指定要忽略的文本部分(就像標記一樣),就像注釋一樣。 標簽不會與代碼的任何部分相鄰。 所以在你的情況下,我認為goto
語句可能是正確的選擇。 或者,如果您可以將代碼放入function
,則可以使用return
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.