2013-12-16 36 views
5

在一個PHP腳本中,我有一些測試,並在腳本後的HTML頁面。在PHP腳本的結尾是否需要die()或exit()函數?

當測試失敗時,我打電話死(「測試1失敗」); 如果沒有測試失敗,PHP腳本到達最後?>然後在PHP腳本之後加載html代碼。

這是一個很好的程序嗎?或者我需要在php腳本結束之前寫入die()或exit()?

+1

號當該腳本到達結尾,它無論如何都會退出。 – George

+0

閱讀此:http://stackoverflow.com/questions/1795025/what-are-the-differences-in-die-and-exit-in-php?rq = 1 – Karthik

+1

它只是有用的,如果有人可能有興趣腳本的返回碼,就像在shell環境中使用它的時候一樣。對於大多數用途,特別是在Web服務器上生成內容,根據以下答案,這不是必需的。 – CompuChip

回答

5

不,你不必寫,這是不是最佳實踐。如果腳本到達最後而沒有致命錯誤,它將退出。

如果這意味着「測試」給你,你錯了。應使用unit tests進行測試。對於那裏有phpunit。試一試,這是測試代碼的正確方式。

編輯:正如CompuChip在評論中所說,唯一有用的退出用例是當你編寫一個基於PHP的shell腳本時,它應該返回一個錯誤代碼。 See the parameter section of the documentation for the exit() function

+0

測試我的意思是我註冊用戶到數據庫。如果某件事失敗了,那就是一個失敗的測試。 – newtphp

+0

這可以並且應該通過單元測試來測試。你「測試」的方式是調試,而不是測試。而不是「垂死」你的腳本應該傳遞一個適當的錯誤信息給用戶,而不僅僅是「kilL」腳本。 – burzum

0

不,您不必在腳本的末尾使用這些函數,因爲它無論如何都存在於腳本的末尾。

0

除非在特定情況下,否則您的生產PHP腳本中絕不應該使用die()exit。相反,重新使用代碼路徑只需向用戶顯示錯誤消息,而不是提前退出腳本。

-1

不! 這不建議使用它

使用trigger_errorerror_log在您的error.log中記錄測試。然後檢查它。

+0

請解釋爲什麼不推薦它,並在可能的情況下爲其提供源。 –

+3

編輯我的回答 –

1

不,你不需要這樣做,但是在編寫控制檯PHP腳本時,如果腳本以正確的方式完成了所有事情,你可能需要檢查例如Bash。這就是當你使用退出()或死()

0

沒有必要把一個死亡或出口在scipt的末尾。 但是,您可以使用exit來終止具有特定退出代碼的腳本(默認情況下爲0)。

E.g

$ php -r "/* does nothing */;" 
$ echo $? 
0 
$ php -r "exit(123);" 
$ echo $? 
123 

http://php.net/exit

+0

有用的附加信息謝謝 – newtphp

1

是對模具()或出口中的PHP腳本的末尾需要()函數?

不,PHP會自行結束腳本。如果腳本是一個包含文件(從另一個文件中調用),那麼它將在包含文件中結束腳本,然後在包含的位置(如果有任何代碼)之後繼續處理原始文件中的任何代碼。

因此,你把die()exit()你想要什麼或需要它。

要進行測試,請將其放在每個測試代碼塊後面。我在測試的某些部分使用它們,如果我只想讓PHP向我展示一些東西然後停止,比如打印出一個數組以確保它正確構建等。
如:

print_r($array); 
exit(); 

對於其他代碼測試,我有時只是回聲 「A部分的工作」 等,如內的if/else。如果我想知道代碼的特定部分是否正在工作,或者是否符合某些條件(基本上,它可以讓您追蹤PHP本身在您的代碼中的位置)。

所有這一切,不要在生產代碼中使用die()exit()。您應該使用更友好和受控的消息傳送設置。出於安全原因和可視化,你可能會給他們一些信息,如「錯誤無法加載SomethingSecret」。此外,當您只翻半頁時,它看起來並不漂亮,然後發出屏幕錯誤消息,這對最終用戶來說可能意味着什麼。

有通過這個閱讀:
PHP Error handling: die() Vs trigger_error() Vs throw Exception

相關問題