PHPC的PSR-2编码标准和Symfony2编码标准之间的主要区别是什么?

PHPC的PSR-2编码标准和Symfony2编码标准之间的主要区别是什么?,php,symfony,coding-style,codesniffer,psr-2,Php,Symfony,Coding Style,Codesniffer,Psr 2,我正试图找出使用phpcs代码嗅探器强制执行哪种代码样式 由于Symfony2的流行,使用其代码标准似乎是一种很好的做法。另一方面,它的代码样式基于PSR2,因此这似乎是应该使用的最基本样式 此外,在基本安装的squizlabs/php_codesniffer中,不包括Symfony2标准,必须手动安装,而PSR2很容易获得 因此,我想知道Symfony2指南与PSR2指南的主要区别,以便决定使用哪种指南 例如,我意识到Symfony2样式强制执行Concat操作符不能被空格包围,而PSR2忽略

我正试图找出使用
phpcs
代码嗅探器强制执行哪种代码样式

由于Symfony2的流行,使用其代码标准似乎是一种很好的做法。另一方面,它的代码样式基于PSR2,因此这似乎是应该使用的最基本样式

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

因此,我想知道Symfony2指南与PSR2指南的主要区别,以便决定使用哪种指南

例如,我意识到Symfony2样式强制执行
Concat操作符不能被空格包围,而PSR2忽略了这种情况。然而,我并没有找到一个简单的方法来列出这些差异。我查看了
rulseset.xml
,但不清楚它是如何设置的

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

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

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

但是,当查看Symfony标准和PSR标准之间的差异(不是PHP CodeSniffer的规则集)时,Symfony标准增加了以下内容:

  • 不在连接运算符(
    )周围添加空格
  • 在多行数组中的每个数组项之后添加逗号,即使在最后一个之后也是如此
  • 在return语句之前添加一个空行(除非return单独位于语句组中(如if语句))
  • 在方法之前声明类属性
  • 首先声明公共成员,然后声明受保护成员,然后声明私有成员(除了类构造函数和PHPUnit类的
    setUp
    tearDown
    方法)
这些只是一些示例,请查看完整列表中的Symfony编码标准


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

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

  • 新行中的复杂参数

但事实恰恰相反:

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

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

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

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

这不是一个真正的答案(因为我不知道区别),但PSR-2标准是由框架互操作性小组创建的,Symfony是该小组的成员。因此,我认为PSR-2更适合大型项目,包括那些使用Symfony的项目。参考: