【问题标题】:PHP closing tag unnecessary? [duplicate]PHP结束标记不必要? [复制]
【发布时间】:2010-07-27 14:11:48
【问题描述】:

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

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

有人会知道更多关于这个问题的信息吗?

谢谢!

【问题讨论】:

标签: php tags


【解决方案1】:

人们避免关闭 ?> 标记的一个原因是避免由于 ?> 标记后的换行符或其他不可见字符而导致“标头已发送错误”。

【讨论】:

  • 这就是 NetBeans 提供 FWIW 的原因。
【解决方案2】:

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

一个像这样结尾的 PHP 文件:

<php
//code
?>   

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

一旦发送了标头,就无法进行更改状态行或内容类型之类的操作。

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

【讨论】:

  • 请注意,?&gt; 后面的新行(例如 \r\n 或 \n)将被忽略,并且不会导致输出任何空格。在文本编辑器中,编辑器通常不会保留最后一行是否以新行结尾,因此 PHP 是在假设 ?&gt; 之后的新行可能只是由编辑器自动添加的情况下构建的。任何其他输出,例如您的示例中的空格,都会导致输出,但仅仅换行不会。
【解决方案3】:

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

【讨论】:

    【解决方案4】:

    它用于避免在包含的文件中发送标头。例如,如果您包含的文件包含 PHP 结束标记和空格字符或换行符,则此文件将发送标头,并且您以后无法更改标头信息。

    【讨论】:

      【解决方案5】:

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

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

      【讨论】:

        【解决方案6】:

        我通常使用结束标签,但在使用 Code Igniter 时听说过这种代码风格。我的猜测是,通过省略结束标记,您可以避免“空白”字符可能会导致会话中断,从而导致“标头已发送”错误。

        【讨论】:

          猜你喜欢
          • 2013-11-26
          • 2012-04-01
          • 2012-03-05
          • 1970-01-01
          • 1970-01-01
          • 2011-05-24
          • 2017-01-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多