PSR-2编码标准与phpcs的Symfony2代码标准有哪些主要区别?

时间:2015-06-15 16:30:27

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

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

由于Symfony2的普及,使用其代码标准似乎是一种很好的做法。另一方面,它的代码风格基于PSR2,所以这似乎是应该使用的最基本的风格。

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

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

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

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

2 个答案:

答案 0 :(得分:17)

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

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

但是,在考虑Symfony和PSR标准(不是PHP CodeSniffer的规则集)之间的差异时,Symfony标准的一些补充是:

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

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

在我看来,Symfony标准是有道理的,我尽可能地使用它们,甚至在Symfony项目之外。

答案 1 :(得分:10)

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

  • 新行中的复杂参数。

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

Symfony site处于相反的规则:

  

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

  • 不在连接运算符周围添加空格

enter image description here

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

enter image description here

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

enter image description here

enter image description here