PHP-CS-Fixer: 在函数声明中将大括号保持在同一行

8
2个回答

11

你在这里描述的风格被称为 "the one true brace style"(缩写为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 的长形式是 array() 而不是 []。是否使用长或短的数组语法;默认为“long”;
  • allow_single_line_closure:是否允许单行 lambda 表示法;默认为 false;
  • position_after_functions_and_oop_constructs:在经典结构(非匿名类、接口、特征、方法和非 lambda 函数)之后,大括号应该放在“下一行”还是“同一行”上;默认为“next”。

在 IDE 中,如 Atom,php-cs-fixer 插件 将在当前项目的根路径中搜索 .php_cs 配置文件。也可以指定路径。

最后但并非最不重要的,Michele Locati 的网站以及 PHP CS Fixer 配置 可以真正帮助到您。

2
非常有教益,谢谢!我使用“短”数组语法[]。PHP CS Fixer配置非常有帮助:已添加到书签。 - ramsey_lewis
1
甚至这个也可以工作。我的天啊。只是为了让这个投标弄清楚,我花了20分钟。太疯狂了。 - Hao

9
您已启用PSR-2,需要在下一行上放置大括号。从文档中可以看出,您可以将braces.position_after_functions_and_oop_constructs设置为same(默认值为next):

  • position_after_functions_and_oop_constructs('next', 'same'):在经典结构(非匿名类、接口、特征、方法和非lambda函数)之后,是否应该将左花括号放在“下一行”或“同一行”;默认为'next'

myconfig.php_cs:

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

我也在寻找cs-fixer的1TBS模式,但我正在使用Atom和包atom-beautify&php-cs-fixer。有人知道这个配置可以放在atom配置文件中,包设置中还是其他地方吗? - ponsfrilus
1
你好 @ponsfrilus。很抱歉我没有收到你的评论通知。你可以在Atom中添加此功能。文件 > 设置 > 包 > php-cs-fixer,然后将你的文件路径添加到 PHP-CS-fixer配置文件路径 中。 - ramsey_lewis
@user2203384 谢谢,我在我的代码库中加入了一个.php_cs文件,因为这个文件会被默认加载到Atom中的php-cs-fixer中。 - ponsfrilus
@scrowler,感谢您的回答。链接已经失效了,您有新的链接吗?我找不到一个解释所有可用规则的地方。 - Handsome Nerd
这似乎是最新版本:https://github.com/FriendsOfPHP/PHP-CS-Fixer/blob/3.0/doc/rules/index.rst - scrowler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接