关于编码风格:PHP:是否有理由在文件末尾添加换行符

PHP: Is there a reason to put a newline at the end of file

当我向github提交一个php文件时,我收到消息"文件末尾没有换行符"。

这只是一个警告,我记得,无论出于何种原因,在文件末尾都有换行符是件好事。

但为什么? 它是一个久违的残余,它仍然有优势还是甚至需要在PHP? 如果是的话,出于什么原因?


它不是PHP所必需的,但它可能会导致某些diff工具出现问题。警告只是一个警告,如果需要可以忽略,但我建议遵循约定并将最后一个字符作为换行符。


这是PSR-2惯例,声明:

All PHP files MUST end with a single blank line.

为什么?因为应该对文件进行操作的实用程序(如diff实用程序)可能无法很好地处理不以换行符结尾的行;这就是POSIX在其中一条规则中的陈述:

3.206 Line

A sequence of zero or more non- characters plus a
terminating character.

因此,不以换行符结尾的行不被视为实际行。这意味着:如果您的最后一行是一行代码(而不是空行),那么这些工具可能会忽略它们,并可能导致程序中断!


警告是为了帮助您检测可能有缺陷的截断文件,假设最后没有换行的文件被怀疑被截断。

除此之外,避免源文件没有终止换行的唯一原因是避免警告!


它可能来自C标准:http://c0x.coding-guidelines.com/5.1.1.2.html(第123段)。原因包括一些编译器或其他文本文本处理工具逐行处理源代码,因此最后一个源代码行也必须以换行符结束。

另请参阅:"文件末尾没有换行符"编译器警告 - include最后没有换行的文件可能导致类似C中的类似问题。