PHP:是否有理由在文件末尾添加换行符

时间:2012-03-29 08:43:46

标签: php coding-style newline git-commit

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

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

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

5 个答案:

答案 0 :(得分:19)

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

答案 1 :(得分:7)

这是PSR-2 convention,声明:

  

所有PHP文件必须以一个空行结束。

为什么呢?因为应该对文件进行操作的实用程序(如diff utility)可能无法很好地处理不以换行符结尾的行;这就是POSIX rulesINotifyDataErrorInfo之一的状态。

  

3.206行

     

零或更多非< newline>的序列人物加上一个   终止性格。

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

答案 2 :(得分:5)

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

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

答案 3 :(得分:3)

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

另请参阅:"No newline at end of file" compiler warning - include最后没有新行的文件可能会导致类似C语言的类似问题。

答案 4 :(得分:2)

现在,在PSR-12 #2.2 Files中:

  

所有PHP文件必须仅使用Unix LF(换行)行结尾。   所有PHP文件都必须以非空行结尾,并以单个LF终止。