在PSR-2 文件的 2.2 中有一件事情让我很困惑。
我所知道的是,不同的操作系统默认使用不同的行尾:
- 窗户:CRLF
- Unix:LF
- 麦克:CR
我想知道为什么“所有 PHP 文件必须使用 Unix LF(linefeed) 行尾”。或者换句话说,行结束会导致什么?
这背后的主要原因是 scv(源代码版本控制),其中更改行尾会导致不必要的差异和冲突。
其次,我们通常在基于 Unix 的 Linux 上提供我们的服务,它使用LF
文件结尾。
第一个导致需要标准,第二个告诉您为什么应该使用LF
标准。
windows:CRLF = '\r\n'
unix:LF = '\n'
mac:CR = '\r' // macOS also changed to LF a long time ago btw.
更新:还要注意,虽然 PHP - 和 imo。所有其他脚本语言 - 并不真正依赖于特定的行尾,在其他语言中这可能会导致问题。
PSR 用于解决编码风格冲突。EOL 是一个冲突点,因此它以某种方式定义了它。PSR 工作组在 line_endings 问题中投票为?:5,LF:17。 https://groups.google.com/forum/#!msg/php-fig/c-QVvnZdMQ0/TdDMdzKFpdIJ
即使它不会导致任何语法差异,在 PSR-2 标准中也是这样定义的。
使用其他行尾在您的 PHP 程序中仍然有效。但是该规则的目的在该页面的开头(PSR-2)中说明:
此处的样式规则源自各个成员项目之间的共性。当不同的作者跨多个项目进行协作时,在所有这些项目中使用一套指南会很有帮助。因此,本指南的好处不在于规则本身,而在于共享这些规则。