【发布时间】:2010-07-27 14:11:48
【问题描述】:
【问题讨论】:
-
可能重复 [为什么在某些脚本中他们省略了结束 php 标签?> ](stackoverflow.com/questions/3219383/…) - 你们真的注意到 SO 在输入你的问题时提出问题吗?你们search at all吗?
-
所以建议没有向我提出很好的答案,抱歉
【问题讨论】:
人们避免关闭 ?> 标记的一个原因是避免由于 ?> 标记后的换行符或其他不可见字符而导致“标头已发送错误”。
【讨论】:
这个问题真的没什么好说的。
一个像这样结尾的 PHP 文件:
<php
//code
?>
实际上会让 PHP 向客户端发送标头,因为关闭 ?> 标记后的空格,如果您突出显示代码块,您可以看到。文件末尾的空格或换行符很容易被遗漏且难以追踪。
一旦发送了标头,就无法进行更改状态行或内容类型之类的操作。
由于文件末尾隐含了结束标记,因此您可以省略仅包含 PHP 代码的文件的结束标记。如果这样做,任何尾随空格都将被视为代码中的空格,而不是内容中的空格,并将被忽略。
【讨论】:
?> 后面的新行(例如 \r\n 或 \n)将被忽略,并且不会导致输出任何空格。在文本编辑器中,编辑器通常不会保留最后一行是否以新行结尾,因此 PHP 是在假设 ?> 之后的新行可能只是由编辑器自动添加的情况下构建的。任何其他输出,例如您的示例中的空格,都会导致输出,但仅仅换行不会。
省略结束标签是完全有效的。这样做的原因之一是避免可能与标题冲突的不需要的空格。
【讨论】:
它用于避免在包含的文件中发送标头。例如,如果您包含的文件包含 PHP 结束标记和空格字符或换行符,则此文件将发送标头,并且您以后无法更改标头信息。
【讨论】:
来自手册(http://www.php.net/manual/en/language.basic-syntax.instruction-separation.php):
注意:PHP 块的结束标记 在文件末尾是可选的,并且 在某些情况下省略它是有帮助的 当使用 include() 或 require() 时,所以 不需要的空格不会出现在 文件的结尾,你仍然会 能够在响应中添加标头 之后。如果您使用它也很方便 输出缓冲,不喜欢 查看添加的不需要的空格 由生成的零件的末端 包含的文件。
【讨论】:
我通常使用结束标签,但在使用 Code Igniter 时听说过这种代码风格。我的猜测是,通过省略结束标记,您可以避免“空白”字符可能会导致会话中断,从而导致“标头已发送”错误。
【讨论】: