erickskrauch/php-cs-fixer-custom-fixers

PHP-CS-Fixer的自定义修复器集合

1.3.0 2024-06-21 20:19 UTC

This package is auto-updated.

Last update: 2024-09-21 21:09:30 UTC


README

PHP-CS-Fixer提供一系列自定义修复器。

Latest Version on Packagist Total Downloads Software License Build Status

安装

运行

composer require --dev erickskrauch/php-cs-fixer-custom-fixers

然后在您的配置文件(.php-cs-fixer.php)中注册修复器并使用它们

<?php
return (new \PhpCsFixer\Config())
    ->registerCustomFixers(new \ErickSkrauch\PhpCsFixer\Fixers())
    ->setRules([
        'ErickSkrauch/align_multiline_parameters' => true,
        // See the rest of the fixers below
    ]);

修复器

目录

ErickSkrauch/align_multiline_parameters

强制对多行函数参数进行对齐或不对齐

--- Original
+++ New
@@ @@
  function foo(
      string $string,
-     int $index = 0,
-     $arg = 'no type',
-     ...$variadic,
+     int    $index    = 0,
+            $arg      = 'no type',
+         ...$variadic
  ): void {}

配置

  • variables - 当设置为true时,强制变量对齐。在false上强制严格不对齐。您可以将其设置为null以禁用变量修改。默认值:true

  • defaults - 当设置为true时,强制默认值对齐。在false上强制严格不对齐。您可以将其设置为null以禁用默认值修改。默认值:false

ErickSkrauch/blank_line_around_class_body

确保类体在其定义之后和结束之前包含一个空行

--- Original
+++ New
@@ @@
  <?php
  class Test {
+
      public function func() {
          $obj = new class extends Foo {
+
              public $prop;
+
          }
      }
+
  }

配置

  • apply_to_anonymous_classes - 此修复器是否应用于匿名类?如果设置为false,则匿名类将被修复,使其体周围没有空行。默认值:true

  • blank_lines_count - 调整空行的数量。默认值:1

ErickSkrauch/blank_line_before_return

这是原始blank_line_before_statement修复器的扩展版本。它仅适用于return语句,并且仅在当前嵌套级别有多个语句的情况下。

--- Original
+++ New
@@ @@
 <?php
 public function foo() {
     $a = 'this';
     $b = 'is';
+
     return "$a $b awesome";
 }

 public function bar() {
     $this->foo();
     return 'okay';
 }

ErickSkrauch/line_break_after_statements

确保在下一个语句(ifswitchforforeachwhiledo-whiletry-catch-finally)上方有一个空行。

--- Original
+++ New
@@ @@
 <?php
 $a = 123;
 if ($a === 123) {
     // Do something here
 }
+
 $b = [1, 2, 3];
 foreach ($b as $number) {
     if ($number === 3) {
         echo 'it is three!';
     }
 }
+
 $c = 'next statement';

ErickSkrauch/multiline_if_statement_braces

确保多行if语句体的大括号放在正确的行上。

--- Original
+++ New
@@ @@
 <?php
 if ($condition1 === 123
- && $condition2 = 321) {
+ && $condition2 = 321
+) {
     // Do something here
 }

配置

  • keep_on_own_line - 是否将关闭括号放在自己的行上?如果设置为false,则大括号将放在最后一个条件语句之后。默认值:true

ErickSkrauch/ordered_overrides

重写和实现的方法必须按它们在父类中定义的顺序进行排序。

--- Original
+++ New
@@ @@
 <?php
 class Foo implements Serializable {

-    public function unserialize($data) {}
+    public function serialize() {}

-    public function serialize() {}
+    public function unserialize($data) {}

 }

注意事项

  • 此修复器基于PHP-CS-Fixer原则实现,依赖运行时、类自动加载和反射。如果依赖项缺失或自动加载器配置不正确,修复器将无法发现父类中方法的顺序。

  • 修复器优先处理extends,之后应用implements。它搜索类的最深父类并将它们作为排序的基础,忽略后续的重新排序。

  • 此修复器在ordered_interfaces修复器之前运行,因此当您使用此修复器时,可能需要运行PHP-CS-Fixer两次才能得到正确的结果。有关更多信息,请参阅此讨论

ErickSkrauch/remove_class_name_method_usages (Yii2)

用PHP 5.5中引入的本地::class关键字替换Yii2的BaseObject::className()使用。

--- Original
+++ New
@@ @@
  <?php
  use common\models\User;
  
- $className = User::className();
+ $className = User::class;