编程时会有什么行结束?

时间:2018-01-15 17:04:47

标签: php newline line-endings psr-2 php-fig

有一件事让我在PSR-2 document的2.2中感到困惑。

enter image description here

我所知道的是,不同的操作系统使用不同的行结尾作为默认值:

  • 窗口:CRLF
  • UNIX:LF
  • MAC:CR

我想知道为什么“所有PHP文件必须使用Unix LF(换行)行结束”。换句话说,什么会结束?

3 个答案:

答案 0 :(得分:2)

这背后的主要原因是scv(源代码版本控制),其中更改行结尾会导致不必要的差异和冲突。

其次,我们通常在Linux上提供服务,这是基于Unix的,使用LF文件结尾。

第一个引起标准的需要,第二个告诉你为什么要使用LF标准。

windows:CRLF = '\r\n'
unix:LF      = '\n'
mac:CR       = '\r' // macOS also changed to LF a long time ago btw.

更新:还要注意,虽然PHP - 和imo。所有其他脚本语言 - 并不真正依赖于特定的行结尾,在其他语言中这可能会导致问题。

答案 1 :(得分:2)

PSR用于解决编码风格冲突。 EOL是一个冲突点,因此它以某种方式定义它。 PSR工作组在line_endings问题上投票为?:5,LF:17。 https://groups.google.com/forum/#!msg/php-fig/c-QVvnZdMQ0/TdDMdzKFpdIJ

即使它没有引起任何语法上的差异,在PSR-2标准中也是这样定义的。

答案 2 :(得分:2)

使用其他行结尾仍然可以在PHP程序中使用。但该规则的目的在该页面的开头(PSR-2)陈述:

  

这里的风格规则源于其中的共性   各种成员项目。当各种作者合作时   多个项目,有助于使用一套指南   在所有这些项目中。因此,本指南的好处不在于   规则本身,但在分享这些规则。