skip to Main Content

I’m currently using VS Code’s latest version 1.41.1 (at the time of writing).

I’ve installed PHP CS Fixer to auto-format my code. However there’s a behavious that I don’t like. It always formats the code like this:

if (condition) {
    // code...
} else {
    // code
}

But this is not giving me good readability.

I’d like to achieve this:

if (condition)
{
    // code...
}
else
{
    // code
}

Is there any extentsion that supports this code formatting for PHP in VS Code? Or is there any option in PHP CS Fixer to skip formatting these curly brackets? Any other otpions?

3

Answers


  1. Chosen as BEST ANSWER

    Based on @Nicolas's comment I was able to make it work in 2 steps.

    1. I had to create a file in the root of my project with a name of .php_cs
    2. Add this block of code to the file:

      <?php
      
      return PhpCsFixerConfig::create()
      ->setRules(array(
          'braces' => array(
              'position_after_anonymous_constructs' => 'next',
              'position_after_control_structures' => 'next',
          )
      ));
      

    All done and works like a charm. Thanks for the help @Nicolas!


  2. Was looking for the same thing. I tried the (accepted) answer Radical_activity gave, but that didn’t work for me. Found this another snippets here:

    https://stackoverflow.com/a/54883745/4638682

    Snippet:

    <?php
    
    $finder = PhpCsFixerFinder::create()
        //->exclude('somedir')
        //->notPath('src/Symfony/Component/Translation/Tests/fixtures/resources.php'
        ->in(__DIR__)
    ;
    
    return PhpCsFixerConfig::create()
        ->setRules([
            '@PSR2' => true,
            'strict_param' => false,
            'array_syntax' => ['syntax' => 'long'],
            'braces' => [
                'allow_single_line_closure' => true, 
                'position_after_functions_and_oop_constructs' => 'same'],
        ])
        ->setFinder($finder)
    ;
    

    From which you also need to create a .php_cs file in your repository.
    That worked for me!

    Login or Signup to reply.
  3. Now days:

    'control_structure_braces' => true,
    'control_structure_continuation_position' => [
        'position' => 'next_line'
    ],
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search