如何规避PSR-2?

How to circumvent PSR-2?

当 Laravel 5.1 临近时,将强制执行 PSR-2。

我是 PHP-FIG 的忠实粉丝,不幸的是,对我来说,我真的习惯了新行中的控制结构。

考虑当前这段代码,已经遵守 PSR-2:

foreach($items as $item) {
    Cart::update($item, Input::get('qty_' .$item));
}

我了解以下内容不是 PSR-2:

foreach($items as $item)
{
    Cart::update($item, Input::get('qty_' .$item));
}

但是,这些变体怎么样?

foreach($items as $item) Cart::update($item, Input::get('qty_' .$item));


foreach($items as $item)

    Cart::update($item, Input::get('qty_' .$item));


foreach($items as $item):

    Cart::update($item, Input::get('qty_' .$item));

endforeach;

如您所见,我沉迷于白色 space,这是因为在换行时前导花括号造成的。

提到的任何变体都可以适当地视为 PSR-2 吗?

不,这些变体中的 none 也符合 PSR-2。控制结构需要有大括号,并且控制结构名称后面应该有一个 space。这些规则在此处明确定义:

Control Structure Guidelines

  • There MUST be one space after the control structure keyword
  • There MUST NOT be a space after the opening parenthesis
  • There MUST NOT be a space before the closing parenthesis
  • There MUST be one space between the closing parenthesis and the opening brace
  • The structure body MUST be indented once
  • The closing brace MUST be on the next line after the body