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

k0p*_*kus 11 php coding-style codesniffer symfony 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代码标准之间差异的完整列表.

Nic*_*tel 18

Symfony的编码标准基本上延长PSR标准.PSR-2没有为所有情况指定规则,因此Symfony标准在PSR-2之上添加了一些规则.

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

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

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

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

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


use*_*096 12

来自PhpStorm 2017.1.在左边的Symfony,在右边的PSR-2上

  • 新行中的复杂参数.

在此输入图像描述

在此输入图像描述

在此输入图像描述

在此输入图像描述

在此输入图像描述

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

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

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

在此输入图像描述

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

在此输入图像描述

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

在此输入图像描述

在此输入图像描述