MENU

PHP不使用 ?> 结尾会更好吗?

March 27, 2020 • 原创文章,PHP

因为最近在学PHP,所以有从网络上下载不少源代码进行学习。
发现许多的PHP尾部都不会添加?>结束标记。
于是好奇心驱使我去百度一下,找到了很多相关信息。

大致都是下面这些回答

PHP闭合标签?>在PHP中对PHP的分析器是可选的。
但是,如果使用闭合标签,任何由开发者,用户,或者FTP应用程序插入闭合标签后面的空格都有可能会引起多余的输出、php错误、之后的输出无法显示、空白页。因此,所有的php文件应该省略这个php闭合标签,并插入一段注释来标明这是文件的底部并定位这个文件在这个应用的相对路径。这样有利于你确定这个文件已经结束而不是被删节的。

如果文件内容是纯 PHP 代码,最好在文件末尾删除 PHP 结束标记。这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致PHP 开始输出这些空白,而脚本中此时并无输出的意图。

当解析一个文件时,PHP会寻找起始标记和结束标记,也就是<?php?>
这告诉PHP开始和停止解析二者之间的代码。此种解析方式使得PHP可以被嵌入到各种不同的文档中去,而任何起始和结束标记之外的部分都会被PHP解析器忽略。

PHP也允许使用短标记<??>但不鼓励使用。只有通过激活 php.ini 中的 short_open_tag配置指令或者在编译PHP时使用了配置选项 --enable-short---tags 时才能使用短标记。
如果文件内容是纯PHP代码,最好在文件末尾删除PHP结束标记。这可以避免在PHP结束标记之后万一意外加入了空格或者换行符,会导致PHP开始输出这些空白,而脚本中此时并无输出的意图。

如果在?>后存在有空格,回车等字符。输出时会当作HTML输出,导致header, setcookie, session_start等函数执行错误

文件末尾的 PHP 代码段结束标记可以不要,有些情况下当使用 include() 或者 require() 时省略掉会更好些,这样不期望的白空格就不会出现在文件末尾,之后仍然可以输出响应标头。在使用输出缓冲时也很便利,就不会看到由包含文件生成的不期望的白空格。

总的来说如果书写规范的话,加?>是绝对不会出问题的,如果你经常粗心大意会在?>后面加一些空格或者回车等字符的话而且是纯PHP代码的话可以选择不使用?>结束标记,除非嵌入HTML的PHP代码,这个是必须要添加?>的。

Last Modified: April 6, 2020
Archives QR Code
QR Code for this page
Tipping QR Code

感谢以下平台提供云加速支持