13

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

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

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

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

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

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

4

2 回答 2

19

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

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

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

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

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

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

于 2015-06-18T09:57:14.980 回答
13

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

  • 新行中的复杂参数。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

但是在Symfony 网站上却有相反的规则:

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

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

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

在此处输入图像描述

于 2017-05-27T09:23:22.560 回答