リクタ付きPHP 7.4型宣言へのリファクタリング型注釈のリファクタリング



問題
したがって、注釈を使用してタイプヒントを使用する古いPHPプロジェクトを持っており、これらの醜い注釈から良いインライン型宣言に移動したいと思います.
これから:
<?php

declare(strict_types=1);

class SomeClass 
{
    /**
    * @var string
    */
    private $someProperty;
}
これを:
<?php

declare(strict_types=1);

class SomeClass 
{
    private string $someProperty;
}
確かに、手動でそれを行うことができますが、プロジェクトのサイズに応じて、これは1日から数週間にどこでもかかる可能性があります.

解決策
まあ、心配しない、これはどこですRector 入る.Rectorは、“定義されたルールに基づいてコードの変更を行う”自動リファクタリングのためのツールです.そのうちの一つmany rules 自動的に型宣言を注釈からインライン宣言に移動させ、その規則をTypedPropertyRectorと呼びます.だから今ではどのようなrectorは、何のルールを使用して知っている、どのように我々はそれを使用しますか?
まず、作曲家を使用してrectorをインストールしますcomposer require rector/rector --dev
次に、initコマンドを使ってrectorを作成します.PHP設定ファイルvendor/bin/rector init今私たちのユースケースに合わせて設定ファイルを変更するときです
<?php
//rector.php

declare(strict_types=1);

use Rector\Php74\Rector\Property\TypedPropertyRector;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;

return static function (ContainerConfigurator $containerConfigurator): void {
    $services = $containerConfigurator->services();
    $services->set(TypedPropertyRector::class);
};
最後に、rectorを実行してsrcディレクトリのファイルを処理することもできますvendor/bin/rector process src または、事前にポップアップ表示される可能性のあるエラーをキャッチするために乾いた実行を行うvendor/bin/rector process src --dry-run
結論
Rectorは、あなたのコードの改善のすべての種類を行うと、他のPHPのバージョンに移行するときに作業の多くを自動化できるようになる素晴らしいツールです.また、自動化されたコードのリファクタリングや自動化されたコードのレビューのためのCIパイプラインの一部としてそれを使用することを検討するのも悪い考えではありません.