关闭PHP文件上的标记(?>)?


17

有些人发誓要通过关闭PHP文件来发誓,有些人则?>说,最好将其关闭。

我知道将它放在那儿不是必需的,我只是想知道这样做的利弊是什么,什么是最佳实践。



有人认为“更优化”一词的意思是“将运行得更快”。说话者(其母语可能不是英语)可能打算使用“更优化”或“更好的做法”之类的东西。
Scott C Wilson

Answers:


27

这与性能无关紧要-解析尾随?>是微不足道的,根本不会有任何明显的区别,除非您每秒包含一百万个文件。

IIRC,php.net建议不要添加?>,原因如下:

  • 没必要
  • 很容易在后面意外添加大量空格?>,该空格将输出到客户端,这又可能导致晦涩的“已发送标题”错误(当包含的文件包含空格,并且您尝试在之后设置标题时会发生这种情况)包括该文件)

根据此处的答案(尤其是有关导致“标题已发送”错误的空的不需要的空白),我改变了习惯,认真地在PHP文件的末尾添加?>。我注意到,当我使用PHPStorm创建一个新文件时,模板只是插入了一个<?php而没有?>结束标记,并认为这只是草率的编码。现在我知道了。
tcrosley 2011年

这个确切的原因-“标题已发送”-这是我的雇主(大型门户网站)严格禁止使用的原因。当您在刚编写的文件末尾忘记它时,这是一回事。如果您编辑的库条目是3个(包括深),那是另一种情况,您的文本编辑器在您不知道的情况下插入了空白,然后突然有一个由2层楼高的人运行的门户停止工作。包含的树通常是100多个文件,发现错误已成为耐心练习。发现错误并将其追溯到您之后,请期待数周后的“深深感谢”访问。
SF。

1
PHP在结束标记后发送空格是语言决策错误的另一个示例。
user949300 '17

12

不,他们错了。

?>在PHP的末尾是可选的。您会找到这样做的充分理由。最重要的是,文件末尾的空白不会阻止您发送标头。这是一个很难发现的错误,因为您可以在任何位置的任何文件中找到它。

通常的方法是在PHP与HTML混合时放置结束标记,而不是将其用于纯PHP文件。它甚至是ZEND框架和其他许多框架的编码标准。

优化意味着代码运行得更快。这很容易证明他们是错误的。分析代码,弄清楚他们在告诉您胡说。


4

我认为建议新手避免添加它,以免引起意外发送多余的换行符。由于不必像您提到的那样拥有它,因此我认为一般的推理是最好不要使用它,以免出错。

我认为不涉及任何“优化”。

我会把你指向这里:https : //stackoverflow.com/questions/4410704/php-closing-tag和这里:https : //stackoverflow.com/questions/3219383/why-do-some-scripts-omit-the -closing-php-tag


1
新手与否...根本没有理由(除强迫症以外)拥有它们
Mchl 2011年

@Mchl我要指出,退出的原因很简单,最终归结为程序员的偏爱,而不是真正的OCD问题……
Kenneth

1
每当我看到?>包含纯PHP的文件时,我都会畏缩。
咖啡因的飞行员

@Kenneth:如果它们很琐碎-我看不到它们。强迫症部分是开个玩笑。
Mchl 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.