Fork me on GitHub
a Sensio Labs Product

Persian Successor (v3.65.0) edition

Rule braces_position

Braces must be placed as configured.

Configuration

allow_single_line_anonymous_functions

Allow anonymous functions to have opening and closing braces on the same line.

Allowed types: bool

Default value: true

allow_single_line_empty_anonymous_classes

Allow anonymous classes to have opening and closing braces on the same line.

Allowed types: bool

Default value: true

anonymous_classes_opening_brace

The position of the opening brace of anonymous classes‘ body.

Allowed values: 'next_line_unless_newline_at_signature_end' and 'same_line'

Default value: 'same_line'

anonymous_functions_opening_brace

The position of the opening brace of anonymous functions‘ body.

Allowed values: 'next_line_unless_newline_at_signature_end' and 'same_line'

Default value: 'same_line'

classes_opening_brace

The position of the opening brace of classes‘ body.

Allowed values: 'next_line_unless_newline_at_signature_end' and 'same_line'

Default value: 'next_line_unless_newline_at_signature_end'

control_structures_opening_brace

The position of the opening brace of control structures‘ body.

Allowed values: 'next_line_unless_newline_at_signature_end' and 'same_line'

Default value: 'same_line'

functions_opening_brace

The position of the opening brace of functions‘ body.

Allowed values: 'next_line_unless_newline_at_signature_end' and 'same_line'

Default value: 'next_line_unless_newline_at_signature_end'

Examples

Example #1

Default configuration.

--- Original
+++ New
 <?php
-class Foo {
+class Foo
+{
 }

-function foo() {
+function foo()
+{
 }

-$foo = function()
-{
+$foo = function() {
 };

-if (foo())
-{
+if (foo()) {
     bar();
 }

-$foo = new class
-{
+$foo = new class {
 };

Example #2

With configuration: ['control_structures_opening_brace' => 'next_line_unless_newline_at_signature_end'].

--- Original
+++ New
 <?php
-if (foo()) {
+if (foo())
+{
     bar();
 }

Example #3

With configuration: ['functions_opening_brace' => 'same_line'].

--- Original
+++ New
 <?php
-function foo()
-{
+function foo() {
 }

Example #4

With configuration: ['anonymous_functions_opening_brace' => 'next_line_unless_newline_at_signature_end'].

--- Original
+++ New
 <?php
-$foo = function () {
+$foo = function ()
+{
 };

Example #5

With configuration: ['classes_opening_brace' => 'same_line'].

--- Original
+++ New
 <?php
-class Foo
-{
+class Foo {
 }

Example #6

With configuration: ['anonymous_classes_opening_brace' => 'next_line_unless_newline_at_signature_end'].

--- Original
+++ New
 <?php
-$foo = new class {
+$foo = new class
+{
 };

Example #7

With configuration: ['allow_single_line_empty_anonymous_classes' => true].

--- Original
+++ New
 <?php
 $foo = new class { };
-$bar = new class { private $baz; };
+$bar = new class {
+private $baz;
+};

Example #8

With configuration: ['allow_single_line_anonymous_functions' => true].

--- Original
+++ New
 <?php
 $foo = function () { return true; };
-$bar = function () { $result = true;
-    return $result; };
+$bar = function () {
+$result = true;
+    return $result;
+};

Rule sets

The rule is part of the following rule sets:

  • @PER with config:

    ['allow_single_line_empty_anonymous_classes' => true]

  • @PER-CS with config:

    ['allow_single_line_empty_anonymous_classes' => true]

  • @PER-CS1.0 with config:

    ['allow_single_line_empty_anonymous_classes' => true]

  • @PER-CS2.0 with config:

    ['allow_single_line_empty_anonymous_classes' => true]

  • @PSR2

  • @PSR12 with config:

    ['allow_single_line_empty_anonymous_classes' => true]

  • @PhpCsFixer with config:

    ['allow_single_line_anonymous_functions' => true, 'allow_single_line_empty_anonymous_classes' => true]

  • @Symfony with config:

    ['allow_single_line_anonymous_functions' => true, 'allow_single_line_empty_anonymous_classes' => true]

References

The test class defines officially supported behaviour. Each test case is a part of our backward compatibility promise.