【问题标题】:What are the main differences between the PSR-2 coding standard and the Symfony2 code standard for phpcs?phpcs 的 PSR-2 编码标准和 Symfony2 编码标准的主要区别是什么?
【发布时间】:2015-08-31 06:04:20
【问题描述】:

我正在尝试找出使用phpcs 代码嗅探器强制执行的代码样式。

自从 Symfony2 流行以来,使用它的代码标准似乎是一种很好的做法。另一方面,它的代码风格是基于 PSR2 的,所以这似乎是一个应该使用的最基本的风格。

此外,在squizlabs/php_codesniffer 的基本安装中,Symfony2 标准不包括在内,必须手动安装,而 PSR2 很容易获得。

所以我想知道 Symfony2 指南与 PSR2 相比的主要区别,以便决定使用哪个。

例如,我意识到 Symfony2 风格强制 Concat operator must not be surrounded by spaces 而 PSR2 忽略这种情况。然而,我没有找到一种简单的方法来列出这些差异。我查看了rulseset.xml,但我并不清楚它是如何设置的。

我对如何获取 PSR2 和 Symfony2 代码标准之间差异的完整列表感兴趣。

【问题讨论】:

  • 不是一个真正的答案(因为我不知道其中的区别),但 PSR-2 标准是由框架互操作性组创建的,Symfony 是其中的成员。出于这个原因,我想说 PSR-2 与大型项目更相关,包括那些使用 Symfony 的项目。参考:php-fig.org

标签: php symfony coding-style codesniffer psr-2


【解决方案1】:

Symfony coding standards 基本上扩展了 PSR 标准。 PSR-2 并没有为所有情况指定规则,因此 Symfony 标准在 PSR-2 之上添加了一些规则。

正如您所说,PHP CodeSniffer 存储库不包含 Symfony 的规则集。 Symfony2 规则集有多个第三方实现,因此它们与 PSR-2 规则集之间的确切差异列表取决于您选择的实现。

然而,当查看 Symfony 和 PSR 标准之间的差异(不是 PHP CodeSniffer 的规则集)时,Symfony 标准的一些补充是:

  • 不在串联运算符周围添加空格 (.)
  • 在多行数组中的每个数组项之后添加逗号,即使在最后一项之后也是如此
  • 在 return 语句之前添加一个空行(除非 return 单独在语句组内(如 if 语句))
  • 在方法之前声明类属性
  • 先声明公共成员,然后是受保护成员,然后是私有成员(类构造函数以及 PHPUnit 类的 setUptearDown 方法除外)

这些只是一些示例,请查看 Symfony 编码标准的完整列表。

在我看来,Symfony 标准是有意义的,我会尽可能地使用它们,即使是在 Symfony 项目之外。

【讨论】:

    【解决方案2】:

    来自 PhpStorm 2017.1。左边是 Symfony,右边是 PSR-2

    • 新行中的复杂参数。

    但是Symfony site 的规则相反:

    在方法/函数的同一行声明所有参数 名称,无论有多少参数;

    • 不在串联运算符周围添加空格

    • 在多行数组中的每个数组项之后添加逗号,即使在最后一项之后也是如此

    • 在 return 语句之前添加一个空行(除非 return 单独在语句组内(如 if 语句))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多