PHP-[讨论]php文件中什么时候最好不要写php的结束标志?>

项目合作 项目合作 主题:1030 回复:2135

PHP-[讨论]php文件中什么时候最好不要写php的结束标志?>

瑾兮 发布于 2016-11-19 字数 157 浏览 1215 回复 2

在读别人的代码的时候,发现很多时候是刻意不去写php文件的结束标签?>的。
想知道这样做有什么充分的理由么?
或者说什么场景最好不要写结束标签?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(2

浮生未歇 2017-07-01 2 楼

PHP在include一个文件a.php的时候,如果a.php在PHP结束标记后面还有多余字符(包括回车或空格),在include的时候会同时被输出。

例子:
a.php

<?php
// anycode here
?>
[回车]
[回车]

b.php

<?php
ob_start();
//include_once 'PHPSn.class.php';
include_once 'a.php';
$con = ob_get_contents();
ob_clean();
var_dump($con);
?>

得到的结果是:

 string(2) "
"

也许在一般的开发中,你不会发现这会有什么影响,但是当你的PHP程序是一个下载脚本,通过readfile读取一个文件,这个时候通过php脚本下载回来的文件已经被改变了,用UE使用二进制编码看,发现前面多了0D0A0D0A,就是因为这样原因。因此建议大部分时候都不必加?>结束。

归属感 2016-12-15 1 楼

在一个文件为纯php文件(非html/php混写)时,最好不写。

不写是为了避免php文件互相包含时,utf8文件BOM可能引发的

Headers already sent

问题。参看stackoverflow的类似问题

在Zend官方的编码规范PSR-2中,强制要求php文件必须不能以?>结尾。