不封闭的php标记是怎们回事?
时间:2021-07-01 10:21:17
帮助过:21人阅读
我知道一般的php文档中,php标记都会以的形式出现。但在一些开源系统中,也有出现这样的情况,在一个文件中,只有的部分。而且感觉?>不在其他文件中。请问为什么能这样写,以及这样写的意义。
回复内容:
先截取一段手册上的原文:如果文件内容是纯 PHP 代码,最好在文件末尾删除 PHP
结束标记。这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致
PHP 开始输出这些空白,而脚本中此时并无输出的意图。
这些影响最多的时候应该是在使用 include 和 require的时候,加了结束标签 如果又在后面加了空格都有可能会引起多余的输出、php错误、之后的输出无法显示、空白页。因此,所有的php文件应该
省略这个php闭合标签,并插入一段注释来标明这是文件的底部并定位这个文件在这个应用的相对路径。这样有利于你确定这个文件已经结束而不是被删节的。
对于一些调用前不能有输出的函数,例如,header,setcookie等,如果在这些函数之前加载了一个有?>结尾的php文件,同时,你又不小心在?>结尾后加了换行等一些其他字符,这些空白字符由于放到了?>外边,是不会被php忽略的,这样话会当做一种输出,此时如果在header等函数调用之前加载一个文件,就会造成php的错误,如果没有结尾,则php语法会将空白忽略,从而不会发生错误
第一,文件末尾的 ?>可以省略
第二,该脚本若被其他脚本包含,所以该脚本不需要结束,否则会报错,因为是要和其他脚本衔接,只有在php代码后面需要写html的才使用闭合标签。
楼上的正解,只有在php代码后面需要写html的才使用闭合标签。