【发布时间】:2018-06-24 08:35:06
【问题描述】:
PSR-2 document 的 2.2 中有一件事情让我很困惑。
我只知道不同的操作系统默认使用不同的行尾:
- windows:CRLF
- unix:LF
- mac:CR
我想知道为什么“所有 PHP 文件必须使用 Unix LF(linefeed) 行尾”。或者换句话说,行结束会导致什么?
【问题讨论】:
标签: php newline line-endings psr-2 php-fig
PSR-2 document 的 2.2 中有一件事情让我很困惑。
我只知道不同的操作系统默认使用不同的行尾:
我想知道为什么“所有 PHP 文件必须使用 Unix LF(linefeed) 行尾”。或者换句话说,行结束会导致什么?
【问题讨论】:
标签: php newline line-endings psr-2 php-fig
这背后的主要原因是 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。所有其他脚本语言 - 并不真正依赖于特定的行尾,在其他语言中这可能会导致问题。
【讨论】:
git这样的scv工具可以自动处理行尾差异。
:-p
git 例如。 ?Ofc。我们本可以在很久以前就进行 PR。
PSR 用于解决编码风格冲突。 EOL 是一个冲突点,因此它以某种方式定义了它。 PSR 工作组在 line_endings 问题中投票为 ?: 5, LF: 17。 https://groups.google.com/forum/#!msg/php-fig/c-QVvnZdMQ0/TdDMdzKFpdIJ
即使它不会导致任何语法差异,在 PSR-2 标准中也是这样定义的。
【讨论】:
在您的 PHP 程序中使用其他行尾仍然有效。但是该规则的目的在该页面的开头(PSR-2)中说明:
这里的风格规则来源于 各种会员项目。当不同的作者跨界合作时 多个项目,使用一组指南会有所帮助 在所有这些项目中。因此,本指南的好处并不在于 规则本身,但在这些规则的共享中。
【讨论】: