juliangut/php-cs-fixer-config

php-cs-fixer 配置

1.8.0 2023-01-13 16:21 UTC

This package is auto-updated.

Last update: 2024-09-15 20:05:21 UTC


README

PHP version Latest Version License

Total Downloads Monthly Downloads

php-cs-fixer-config

作为可以的意见,为 PHP-CS-Fixer 提供默认配置

PHPUnit 的配置假设使用版本 8.4 或更高

安装

Composer

composer require --dev juliangut/php-cs-fixer-config

使用

在项目根目录创建 .php-cs-fixer.php 文件

<?php

use Jgut\CS\Fixer\FixerConfig80;
use PhpCsFixer\Finder;

$finder = Finder::create()
    ->ignoreDotFiles(false)
    ->exclude(['vendor'])
    ->in(__DIR__)
    ->name('.php-cs-fixer.php');

return (new FixerConfig80())
    ->setFinder($finder);

根据您想支持的 PHP 版本使用提供的配置之一

  • Jgut\CS\Fixer\FixerConfig73,PHP >= 7.3
  • Jgut\CS\Fixer\FixerConfig74,PHP >= 7.4
  • Jgut\CS\Fixer\FixerConfig80,PHP >= 8.0
  • Jgut\CS\Fixer\FixerConfig81,PHP >= 8.1

.php-cs-fixer.cache 添加到您的 .gitignore 文件

配置

头部

提供头部字符串,它将被添加到由 php-cs-fixer 分析的每个文件的开头。

字符串 {{year}} 将被替换为当前年份,字符串 {{package}} 将被替换为您的包名

return (new FixerConfig80())
    ->setHeader(<<<'HEADER'
(c) 2021-{{year}} Julián Gutiérrez <juliangut@gmail.com>

This file is part of package {{package}}
HEADER);
--- Original
+++ New
 <?php

+/*
+ * (c) 2021-2022 Julián Gutiérrez <juliangut@gmail.com>
+ *
+ * This file is part of package juliangut/php-cs-fixer-config
+ */
+
 declare(strict_types=1);

 namespace App;

PHPUnit

如果您使用 PHPUnit

return (new FixerConfig80())
    ->enablePhpUnitRules();

Doctrine

如果您使用 Doctrine

return (new FixerConfig80())
    ->enableDoctrineRules();

类型推断

如果您正在进行“类型提示一切”的过程,尝试启用类型推断规则,并让 php-cs-fixer 将类型从注释迁移到属性、参数和返回类型

请注意 这些规则是实验性的,修复后需要人工监督,因此建议您不要永久启用类型推断

return (new FixerConfig80())
    ->enableTypeInferRules();
--- Original
+++ New
<?php

 declare(strict_types=1);

 namespace App;
 
 class Foo
 {
-    /**
-     * @var string|null
-     */
-    protected $foo
+    protected ?string $foo

-    /**
-     * @var Bar
-     */
-    protected $bar
+    protected Bar $bar

-    /**
-     * @var bool
-     */
-    protected $baz
+    protected bool $baz

     /**
      * Foo constructor.
-     *
-     * @param string|null $foo
-     * @param Bar         $bar
-     * @param bool        $baz
      */
-    public function __construct($foo, $bar, $baz = false)
+    public function __construct(?string $foo, Bar $bar, bool $baz = false)
     {
         $this->foo = $foo;
         $this->bar = $bar;
         $this->baz = $baz;
     }

-    /**
-     * @return bool
-     *
-    public function isBaz()
+    public function isBaz(): bool
     {
        return $this->baz;
     }
 }

其他规则

如果您需要添加一些其他规则,这些规则可以是新的或覆盖已设置的规则,最简单的方法是使用 setAdditionalRules 方法

最好通过类名识别修复器,尽管使用修复器名称也可以

use Jgut\CS\Fixer\FixerConfig80;
use PhpCsFixer\Fixer\FunctionNotation\SingleLineThrowFixer;

return (new FixerConfig80())
    ->setAdditionalRules([
        SingleLineThrowFixer::class => true, // Preferred way
        'single_line_throw' => true, // Same as above
    ]);

自定义修复器配置

如果您需要更多控制应用的规则或更喜欢更干净的设置,您可以轻松创建自定义修复器配置而不是设置额外的规则

use Jgut\CS\Fixer\FixerConfig81;
use PhpCsFixer\Fixer\FunctionNotation\SingleLineThrowFixer;

class CustomFixerConfig extends FixerConfig81
{
    protected function getFixerRules(): array
    {
        // Return your custom rules, or add/remove rules from parent's getFixerRules()
        return array_merge(
            parent::getFixerRules(),
            [
                SingleLineThrowFixer::class => true, // Preferred way
                'single_line_throw' => true, // Same as above
            ]
        );
    }
}

贡献

发现了一个错误或有一个功能请求? 请打开一个新问题。在提交之前查看现有的问题。

请参阅文件 CONTRIBUTING.md

许可证

有关许可证条款的副本,请参阅源代码中包含的文件 LICENSE