3

在PSR-2 文件的 2.2 中有一件事情让我很困惑。

在此处输入图像描述

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

  • 窗户:CRLF
  • Unix:LF
  • 麦克:CR

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

4

3 回答 3

4

这背后的主要原因是 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。所有其他脚本语言 - 并不真正依赖于特定的行尾,在其他语言中这可能会导致问题。

于 2018-01-15T17:10:30.807 回答
3

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

即使它不会导致任何语法差异,在 PSR-2 标准中也是这样定义的。

于 2018-01-15T17:19:07.103 回答
2

使用其他行尾在您的 PHP 程序中仍然有效。但是该规则的目的在该页面的开头(PSR-2)中说明:

此处的样式规则源自各个成员项目之间的共性。当不同的作者跨多个项目进行协作时,在所有这些项目中使用一套指南会很有帮助。因此,本指南的好处不在于规则本身,而在于共享这些规则。

于 2018-01-15T17:22:47.953 回答