在PHP类文件中不包括关闭`?>`标记有什么好处?

Edw*_*uay 5 php

可能重复:
PHP结束标记

我见过许多没有关闭的PHP类文件,?>而不是这样:

<?php
class DataTypeLine extends DataType {
    ...
}
?>
Run Code Online (Sandbox Code Playgroud)

他们只是有这个:

<?php
class DataTypeLine extends DataType {
    ...
}
Run Code Online (Sandbox Code Playgroud)

我还注意到当我在Eclipse Helios中创建一个新的PHP文件时,它默认只有一个起始<?php标记但没有结束标记 ?>.

没有结束?>标记有什么好处?

Aar*_*ken 8

没有真正的优势 - 它有助于确保没有无意的空格通过在文件末尾添加新行来输出,这可能会弄乱诸如发送标题之类的内容.

例如,像这样的文件:

<?php
    /* do stuff */
?>

<!-- note the empty space above, this comment not really part of the code -->
Run Code Online (Sandbox Code Playgroud)

会破坏像这样使用它的文件

<?php
    require 'myfile.php';
    header('Location: http://example.com/');
?>
Run Code Online (Sandbox Code Playgroud)

由于第一个文件中的空白行,输出已发送错误.通过不使用?>,您可以避免这个潜在的问题.


jor*_*ens 5

从PHP 文档

文件末尾的PHP块的结束标记是可选的,在某些情况下,在使用include()或require()时省略它是有帮助的,因此在文件末尾不会出现不需要的空格,并且您仍然会能够稍后将响应添加到响应中.如果使用输出缓冲,它也很方便,并且不希望在包含的文件生成的部分的末尾看到添加的不需要的空格.