phpcs 的 PSR-2 编码标准和 Symfony2 编码标准之间的主要区别是什么?
What are the main differences between the PSR-2 coding standard and the Symfony2 code standard for phpcs?
我正在尝试找出使用 phpcs
代码嗅探器强制执行的代码风格。
自从Symfony2流行以来,使用它的代码标准似乎是一个很好的习惯。另一方面,它的代码风格是基于PSR2的,所以这似乎是最基本的风格。
此外,在squizlabs/php_codesniffer
的基本安装中,没有包含Symfony2标准,必须手动安装,而PSR2很容易获得。
所以我想知道 Symfony2 指南与 PSR2 相比的主要区别,以便决定使用哪个。
例如,我意识到 Symfony2 风格强制执行 Concat operator must not be surrounded by spaces
而 PSR2 忽略这种情况。然而,我没有找到一种简单的方法来列出差异。我查看了 rulseset.xml
,但我不太清楚它是如何设置的。
我对如何获得 PSR2 和 Symfony2 代码标准之间差异的完整列表感兴趣。
Symfony coding standards basically extend the PSR standards. PSR-2 并未为所有情况指定规则,因此 Symfony 标准在 PSR-2 之上添加了一些规则。
如您所说,PHP CodeSniffer 存储库不包含 Symfony 的规则集。 Symfony2 规则集有多个第三方实现,因此它们与 PSR-2 规则集之间的确切差异列表取决于您选择的实现。
但是,在查看 Symfony 和 PSR 标准(不是 PHP CodeSniffer 的规则集)之间的差异时,Symfony 标准的一些补充是:
- 不在串联运算符周围添加空格 (
.
)
- 在多行数组中的每个数组项之后添加一个逗号,即使是在最后一个之后
- 在 return 语句之前添加一个空行(除非 return 单独位于语句组中(如 if 语句))
- 在方法之前声明 class 属性
- 首先声明 public 成员,然后是受保护的,然后是私有的(class 构造函数以及 PHPUnit
setUp
和 tearDown
方法除外 classes)
这些只是一些示例,请查看 Symfony 编码标准以获得完整列表。
在我看来,Symfony 标准是有意义的,我会尽可能地使用它们,即使是在 Symfony 项目之外。
来自 PhpStorm 2017.1。左边是Symfony,右边是PSR-2
- 新行中的复杂参数。
但在 Symfony site 处与规则相反:
Declare all the arguments on the same line as the method/function
name, no matter how many arguments there are;
- 不在连接运算符周围添加空格
- 在多行数组中的每个数组项之后添加一个逗号,即使是在最后一个之后
- 在 return 语句之前添加一个空行(除非 return 单独位于语句组中(如 if 语句))
我正在尝试找出使用 phpcs
代码嗅探器强制执行的代码风格。
自从Symfony2流行以来,使用它的代码标准似乎是一个很好的习惯。另一方面,它的代码风格是基于PSR2的,所以这似乎是最基本的风格。
此外,在squizlabs/php_codesniffer
的基本安装中,没有包含Symfony2标准,必须手动安装,而PSR2很容易获得。
所以我想知道 Symfony2 指南与 PSR2 相比的主要区别,以便决定使用哪个。
例如,我意识到 Symfony2 风格强制执行 Concat operator must not be surrounded by spaces
而 PSR2 忽略这种情况。然而,我没有找到一种简单的方法来列出差异。我查看了 rulseset.xml
,但我不太清楚它是如何设置的。
我对如何获得 PSR2 和 Symfony2 代码标准之间差异的完整列表感兴趣。
Symfony coding standards basically extend the PSR standards. PSR-2 并未为所有情况指定规则,因此 Symfony 标准在 PSR-2 之上添加了一些规则。
如您所说,PHP CodeSniffer 存储库不包含 Symfony 的规则集。 Symfony2 规则集有多个第三方实现,因此它们与 PSR-2 规则集之间的确切差异列表取决于您选择的实现。
但是,在查看 Symfony 和 PSR 标准(不是 PHP CodeSniffer 的规则集)之间的差异时,Symfony 标准的一些补充是:
- 不在串联运算符周围添加空格 (
.
) - 在多行数组中的每个数组项之后添加一个逗号,即使是在最后一个之后
- 在 return 语句之前添加一个空行(除非 return 单独位于语句组中(如 if 语句))
- 在方法之前声明 class 属性
- 首先声明 public 成员,然后是受保护的,然后是私有的(class 构造函数以及 PHPUnit
setUp
和tearDown
方法除外 classes)
这些只是一些示例,请查看 Symfony 编码标准以获得完整列表。
在我看来,Symfony 标准是有意义的,我会尽可能地使用它们,即使是在 Symfony 项目之外。
来自 PhpStorm 2017.1。左边是Symfony,右边是PSR-2
- 新行中的复杂参数。
但在 Symfony site 处与规则相反:
Declare all the arguments on the same line as the method/function name, no matter how many arguments there are;
- 不在连接运算符周围添加空格
- 在多行数组中的每个数组项之后添加一个逗号,即使是在最后一个之后
- 在 return 语句之前添加一个空行(除非 return 单独位于语句组中(如 if 语句))