省略文件末尾 PHP 块的结束标记是否会删除任何换行符或空格(如果存在于相应文件中)?

Does omitting the closing tag of a PHP block at the end of a file remove any line feeds or whitespace,if present in a respective file?

我正在使用 PHP 7.1.12

我知道 PHP 代码块的结束标记自动暗示分号,因此我们不需要用分号终止 PHP 代码块的最后一行。

该块的结束标记将包括紧随其后的换行符(如果存在的话)。

所以,我的问题是,假设我有一个 PHP 代码块,其中只有几条语句,我在最后一个有效代码行之后添加了十个换行符,然后我没有添加结束 PHP 标签即 ?>

那么,在上述情况下,PHP 会删除那些额外的 10 行提要或者我添加的任何不需要的空格吗?

I know that the closing tag of a block of PHP code automatically implies a semicolon so we do not need to have a semicolon terminating the last line of a PHP block.

表示 <?php echo '' ?> 可以。

The closing tag for the block will include the immediately trailing newline if one is present.

均值

<?php echo '' ?>
\n
\n
\n

将输出 3 个换行符。

但我想你问的是,下面是否会输出换行符。

<?php echo '';
\n
\n
\n

它不会,出于同样的原因 PHP 评论不会被输出。

PSR-2 准则2.2. Files

  • 所有 PHP 文件必须使用 Unix LF(换行)行结尾。

  • 所有 PHP 文件必须以一个空行结尾。 (不是 10 ;p)

  • 必须从仅包含 PHP.

  • 的文件中省略结束 ?> 标记

如果您的文件是纯 PHP,即您没有在一个 HTML 文件中使用多个 PHP 块,您应该始终避免关闭标签。 结束标记表示您的脚本已完成,并将代码的下一部分视为 HTML。如果你的 HTML 和 PHP 在你的代码库中是分开的,你应该用 <?php 标签开始文件,然后只写 PHP 脚本。该文件中的所有行都将被视为 PHP,只有回显的部分会打印在屏幕上。

所以回到你的问题,你在最后一个 PHP 代码行之后添加的那 10 行将被视为 PHP 脚本的一部分,并且将被视为空脚本中的行,而不是 HTML.

中的空行

更多信息的一些参考资料: https://softwareengineering.stackexchange.com/questions/89553/closing-tag-on-php-files https://www.sitepoint.com/should-you-close-your-php-code-tags/ https://wordpress.stackexchange.com/questions/210765/to-close-or-not-to-close-php