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

问题描述 投票:25回答:4

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

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

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

php coding-style newline git-commit
4个回答
20
投票

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


8
投票

这是一个PSR-2 convention,声明:

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

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

3.206线

一系列零个或多个非<newline>字符加上一个终止字符。

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


5
投票

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

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


3
投票

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

另请参阅:"No newline at end of file" compiler warning - includeing一个没有新行的文件最后可能导致类似的问题,如在C.


1
投票

现在,在PSR-12 #2.2 Files

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

© www.soinside.com 2019 - 2024. All rights reserved.