2010-07-27 57 views
9

可能重複:
why in some scripts they omit the closing php tag ?>PHP關閉標記不必要?

正如Code Igniter style guide解釋,似乎PHP結束標記是可選的。它甚至說你應該避免它有幾個原因。

任何人都會有關於這個問題的更多信息?

謝謝!

+10

[爲什麼在某些腳本中他們會忽略關閉php標記?](http://stackoverflow.com/questions/3219383/why-in-some-scripts-they-omit-the-closing-php - 標籤) - 你們是否真的注意到,當你進入你的時候,你會提出一些問題?你們[搜索所有](http://stackoverflow.com/search?q=closing+tags+php)? – Gordon 2010-07-27 14:16:47

+0

另外:http://stackoverflow.com/questions/1656744/when-not-to-close-a-php-file/1656752#1656752 – karim79 2010-07-27 14:18:00

+0

SO建議不提議給我很好的答案,對不起 – 2010-07-27 14:26:59

回答

12

人們避免關閉?>標記的一個原因是避免了由於換行符或?>標記後面的其他不可見字符導致的「標題已發送錯誤」。

+0

這就是NetBeans的原因給FWIW。 – pbhj 2017-09-25 13:44:07

3

忽略結束標記完全有效。這樣做的原因之一是避免可能與標題衝突的不需要的空白。

1

它用於避免在包含文件中發送標題。例如,如果您的包含文件包含PHP結束標記和空格字符集或換行符,則此文件將發送標題,並且您將來無法更改標題信息。

0

我通常使用結束標籤,但使用Code Igniter時聽說過這種代碼風格。我的猜測是,通過忽略結束標記,可以避免可能最終破壞會話的「空白」字符的問題,這可能會導致「標頭已發送」錯誤。

1

從手冊(http://www.php.net/manual/en/language.basic-syntax.instruction-separation.php):

注意:在文件的結尾PHP塊 的結束標記是可選的,並且 在某些情況下省略其使用包括時是有幫助的 ( )或require(),所以 不需要的空白不會發生在 文件末尾,並且您仍然可以在稍後將標頭添加到響應 。如果您使用 輸出緩衝區,並且不希望 在 包含的文件生成的部分末尾看到添加的不需要的空格,那麼也很方便。

5

真的沒有太多可以說這個問題。

像這樣結尾的PHP文件:

<php 
//code 
?> 

,實際上使PHP頭髮送到客戶端,因爲收盤?>標記,如果突出顯示的代碼塊,你可以看到後的空白。文件末尾的空格或換行符可能很容易被忽略,難以追蹤。

一旦標題發送完畢,就不可能做更改狀態行或內容類型等內容。

由於結束標記隱含在文件末尾,因此您可以僅使用PHP代碼忽略文件的結束標記。如果這樣做,任何尾隨的空白將被視爲代碼中的空白,而不是內容中的空白,並且將被忽略。