php-cs-fixer: держите скобку в одной строке объявления функции

Php cs fixer делает:

function foobar()
{
....
}

и я хочу:

function foobar() {
....
}

Я не вижу, что такое конфигурация, чтобы держать скобки на той же строке в моем конфиге .php_cs файл, ни на https://github.com/FriendsOfPHP/PHP-CS-Fixer. Я использую php-cs-fixerV2.

Мой конфигурационный файл: https://pastebin.com/v03v9Lb5

1 ответ

Решение

У вас включен PSR-2, для чего нужны скобки на следующей строке. Из документации видно, что вы можете установить braces.position_after_functions_and_oop_constructs в same (по умолчанию будет next):

  • position_after_functions_and_oop_constructs ('next', 'same'): должна ли открывающая скобка быть помещена в "следующую" или "ту же" строку после классных конструкций (неанонимные классы, интерфейсы, признаки, методы и не-лямбда-функции); по умолчанию "следующий"

myconfig.php_cs:

    'braces' => array(
        'allow_single_line_closure' => true,
        'position_after_functions_and_oop_constructs' => 'same',
    ),

Стиль, который вы описали здесь, называется " стиль единой верной скобки " (сокращенно 1TBS или OTBS).

Когда я получаю точно такую ​​же проблему, я наконец-то закончил здесь, и хотя ответ @Robbie помогает, мне все равно пришлось много искать.

Итак, я наконец-то понял .php_cs в моем хранилище:

<?php

$finder = PhpCsFixer\Finder::create()
    //->exclude('somedir')
    //->notPath('src/Symfony/Component/Translation/Tests/fixtures/resources.php'
    ->in(__DIR__)
;

return PhpCsFixer\Config::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)
;

Некоторые пояснения (из ( PHP-CS-Fixer README):

  • array_syntax для long означает array() вместо [], Использовать ли синтаксис длинного или короткого массива; по умолчанию "длинный";
  • allow_single_line_closure: должна ли быть разрешена однострочная лямбда-нотация; по умолчанию false
  • position_after_functions_and_oop_constructs: следует ли размещать открывающую фигурную скобку на следующей или той же строке после классных конструкций (неанонимные классы, интерфейсы, признаки, методы и не-лямбда-функции); по умолчанию "следующий".

В IDE, таком как Atom, плагин php-cs-fixer будет искать .php_cs Конфигурационный файл в корневом каталоге текущего проекта. Также возможно указать путь.

Наконец, что не менее важно, веб-сайт Michele Locati, PHP CS Fixer, конфигурация действительно может помочь.

Другие вопросы по тегам