簡體   English   中英

結束沒有die()或exit()的php標簽

[英]End a php tag without die() or exit()

我想知道PHP是否有一個允許我在進入“?>”標記之前結束進程的函數,例如:

<?php

    echo 'first';

    endphptag();

    echo 'second';

?>

third

<?php

    echo 'fourth';

?>

那么輸出應該是:

first

third

fourth

我知道有些人認為這是無用的東西,但我想在iframe上使用驗證腳本而不是使用dieexit函數,因為它會殺死整個腳本,我只想結束它的一部分。

通常我使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM