当我向github提交一个php文件时,我收到消息“文件末尾没有换行符”。
这只是一个警告,我记得,无论出于何种原因,在文件末尾都有换行符是件好事。
但为什么?它是一个久违的残余,它仍然有优势还是甚至需要在PHP?如果是的话,出于什么原因?
它不是PHP所必需的,但它可能会导致一些diff工具出现问题。警告只是一个警告,如果需要可以忽略,但我建议遵循约定并将最后一个字符作为换行符。
这是一个PSR-2 convention,声明:
所有PHP文件必须以一个空行结束。
为什么?因为应该对文件进行操作的实用程序(如diff utility)可能无法很好地处理不以换行符结尾的行;这就是POSIX在其中一个rules中的陈述:
3.206线
一系列零个或多个非<newline>字符加上一个终止字符。
因此,不以换行符结尾的行不被视为实际行。这意味着:如果您的最后一行是一行代码(而不是空行),那么这些工具可能会忽略它们,并可能导致程序中断!
警告是为了帮助您检测可能有缺陷的截断文件,假设最后没有换行的文件被怀疑被截断。
除此之外,避免源文件没有终止换行的唯一原因是避免警告!
它可能来自C标准:http://c0x.coding-guidelines.com/5.1.1.2.html(第123段)。原因包括一些编译器或其他文本文本处理工具逐行处理源代码,因此最后一个源代码行也必须以换行符结束。
另请参阅:"No newline at end of file" compiler warning - include
ing一个没有新行的文件最后可能导致类似的问题,如在C.
现在,在PSR-12 #2.2 Files:
所有PHP文件必须仅使用Unix LF(换行)行结尾。所有PHP文件必须以非空白行结束,以单个LF结束。