PHP关闭标签不必要吗?

时间:2010-07-27 14:11:48

标签: php tags

  

可能重复:
  why in some scripts they omit the closing php tag ?>

Code Igniter style guide中所述,似乎PHP结束标记是可选的。它甚至说你应该避免它有几个原因。

任何人都可以获得有关此问题的更多信息吗?

谢谢!

6 个答案:

答案 0 :(得分:12)

人们避免关闭的一个原因是什么?>标签是避免“标题已发送错误”由于换行符或其后的其他不可见字符?>标签

答案 1 :(得分:6)

关于这个问题真的没什么好说的。

以这样结束的PHP文件:

<php
//code
?>   

实际上会使PHP向客户端发送标头,因为在关闭?>标记之后有空格,如果突出显示代码块,您可以看到它。文件末尾的空格或换行符很容易被遗漏,很难追踪。

发送标题后,无法更改状态行或内容类型等内容。

由于文件末尾隐含了结束标记,因此您只需省略仅包含PHP代码的文件的结束标记即可。如果这样做,任何尾随空格将被视为代码中的空格,而不是内容中的空格,并将被忽略。

答案 2 :(得分:3)

省略结束标记是完全有效的。这样做的原因之一是避免可能与标题冲突的不需要的空格。

答案 3 :(得分:1)

它曾经避免在包含的文件中发送标头。例如,如果您所包含的文件包含PHP结束标记和空格字符或新行,则此文件将发送标题,您将来无法更改标题信息。

答案 4 :(得分:1)

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

  

注意:PHP块的结束标记   在文件的末尾是可选的,和   在某些情况下省略它是有帮助的   当使用include()或require()时,所以   不需要的空格不会出现在   文件的结尾,你仍然会   能够为响应添加标头   后来。如果你使用它也很方便   输出缓冲,并不喜欢   看到添加不需要的空格   由...生成的部分的结尾   包含文件。

答案 5 :(得分:0)

我通常使用结束标记,但在使用Code Igniter时已经听说过这种代码样式。我的猜测是,通过省略结束标记,您可以避免可能导致“已发送标头”错误的“空白”字符可能出现问题。