ホームページ >バックエンド開発 >PHPチュートリアル >コードリファクタリングのマスター: Rector PHP の使用に関する完全ガイド

コードリファクタリングのマスター: Rector PHP の使用に関する完全ガイド

WBOY
WBOYオリジナル
2024-08-26 06:31:32403ブラウズ

Mastering Code Refactoring: A Complete Guide to Using Rector PHP
Unsplash の Matteo del Piano による写真

レクター PHP の紹介

進化し続ける PHP 開発の世界では、コードベースをクリーン、最新、効率的に保つことが非常に重要です。ここで、Rector PHP が活躍します。 Rector PHP の使用方法、インストール方法、または Rector PHP とは何なのか知りたい場合は、この包括的なガイドが最適です。基本を説明し、詳細な Rector PHP チュートリアルを提供し、PHP Rector とそれを効果的に使用する方法についての洞察を提供します。この記事を読み終えるまでに、Rector PHP とそれが開発ワークフローをどのように強化できるかをしっかりと理解できるようになります。

レクターPHPとは何ですか?

Rector は 2020 年に開始されましたが、1.0 リリースは 2024 年にのみ行われました。これは、コード ベースの静的分析を実行するコマンド ライン ツールです。その分析に基づいて変更を適用できます。この良い例は、コード ベースが array() 呼び出しでいっぱいだったらどうなるかということでしょう。これは現在では古い手法とみなされており、現在では [] 短い配列構文に置き換えられています。

これを置き換えるためにコードベースを調べるのは面倒です。単純な検索と置換ツールを使用することもできますが、文字列または変更すべきではないコメント内にカプセル化された array() があった場合はどうなるでしょうか?ここで、置き換えられたすべてのインスタンスを確認する必要があります。

この種の問題は、Rector が得意とするところです。代わりに、Rector はコードを見て、それが置き換えられる配列であるかどうかを明確に知ることができます。

PHP CS Fixer でもこれができるのではないかと疑問に思われるかもしれませんが、それは本当です。しかし、Rector には、構文を認識するだけでなく型も分析するために内部で動作する PHPStan も組み込まれています。これは、Rector が、クラスが特定の親クラスを持つとき、変数が特定の型であるとき、または関数の期待される戻り値の型を検出できることを意味します。コードベースに一括して変更を加えるためのはるかに大きな範囲が与えられます。

Rector PHP のインストール方法

これは経験豊富な PHP 開発者には明らかなことのように思えるかもしれませんが、主に 2 つの方法があり、それは実際に Rector をどのように使用するかによって異なります。

継続的インテグレーションの一部として Rector を使用したい場合は、composer を通じてプロジェクトに別の Rector をインストールするのが合理的です。

composer require --dev rector/rector

しかし、アップグレードを実行するために単一または複数のプロジェクトで Rector を試したい場合は、
を使用して Rector をグローバルにインストールする方が良いかもしれません。

composer global require rector/rector

どのステップを選択しても、次のステップでは、プロジェクトのルート ディレクトリに構成ファイルを作成し、アップグレードする PHP コードを含むすべてのフォルダーを含めます。もちろん、ベンダー フォルダーは変更したくないので、これには含まれません。

Laravel プロジェクトの構成は次のようになります:

use Rector\Config\RectorConfig;
use Rector\Php71\Rector\List_\ListToArrayDestructRector;

return RectorConfig::configure()
    ->withPaths([__DIR__. '/config', __DIR__. '/src', __DIR__. '/tests', __DIR__. '/routes'])
    ->withImportNames(removeUnusedImports: true);

PHP Rector: 効果的な使用方法

前のセクションと同様に、Rector の使用は、それをどのように使用したいかによって決定できます。レクターはルールの選択を通じて変更を適用します。これは PHP CS Fixer と同じです。これらのルールは、問題を検出し、解決するように設計された問題の修正を試みます。

継続的統合方法で Rector を使用したい場合は、開発時にすべてのコードを可能な限り最適化して使用したいため、特定のルール セットのみを使用することがあります。

Rector には、デッド コードまたはコード品質と呼ばれる一連のルールがあり、それぞれコードを削除したり、強化および最適化したりします。これらのセットはほとんどの場合に機能すると確信できるため、これらのセットだけに固執することは非常に有利です。ただし、Rector のコードの書き方は決して完璧ではないことを絶対に認識しておく必要があります。多くの場合、ルールを作成する場合、そのルールは典型的なシナリオをカバーしており、コード ベースで見つかったいくつかの状況を見逃している可能性があります。これにより、コードが壊れる可能性があります。

Rector を使用したい場合は、必ずアプリケーション用にテストを作成する必要があります。これらがなければ、Rector は問題になるまで発見できないバグを簡単に導入してしまう可能性があります。

Rector を使用するときに考慮すべきもう 1 つのことは、PHP CS Fixer などの lint ツールを使用する必要があるということです。 Rector は空白、メソッド呼び出し間のスペース、改行、引数などを考慮しません。lint ツールを使用すると、Rector が修正を適用した後、コードの書式設定が期待される標準に保たれます。

ステップバイステップの Rector PHP チュートリアル

これで Rector がインストールされ、試す準備が整いました。1 つのルールを適用してみましょう。まずは、前に作成した構成ファイルを更新しましょう。

use Rector\Config\RectorConfig;
use Rector\Php71\Rector\List_\ListToArrayDestructRector;

return RectorConfig::configure()
    ->withPaths([__DIR__. '/config', __DIR__. '/src', __DIR__. '/tests', __DIR__. '/routes'])
    ->withImportNames(removeUnusedImports: true)
    ->withRules([
        ListToArrayDestructRector::class,
    ]);

この構成の場合、リストの使用を置き換えて、代わりに配列の再構築を使用します。予想される変更は次のようなものです:

-list($a, $b) = ['a', 'b'];
+[$a, $b] = ['a', 'b'];

Now we can test this config by performing a dry run of Rector.

rector --dry-run

If everything has been successful we should now see an output that contains a diff of all the changes to each file, with a list of the rules that made the changes. Our config only lists one rule so only one rule is applied but if more rules are added we’ll see a list of one or more here.

Mastering Code Refactoring: A Complete Guide to Using Rector PHP

This is then a great time to review the changes and make sure the rule is performing as expected. Once we’re happy we can run Rector again. Without the dry run flag, changes will be written to the files.

rector

After it’s completed we should run our favourite linting tool and then run our tests. That’s it. We’ve now used Rector.

Conclusion: Boosting Your PHP Development with Rector

Rector PHP is a powerful tool that can significantly enhance your PHP development workflow by automating code refactoring and ensuring your codebase remains clean and modern. By understanding what Rector PHP is, learning how to install it, and mastering how to use it effectively, you can leverage its capabilities to streamline code updates, improve code quality, and reduce the risk of code feeling like a “legacy” project. Whether you’re integrating Rector into your continuous integration pipeline or using it for large-scale codebase upgrades, Rector is an indispensable asset for any PHP developer looking to maintain a high standard of code excellence.

If you want to take you knowledge of Rector further I suggest going to https://getrector.com/.

I’m Peter Fox, a software developer in the UK who works with Laravel. Thank you for reading my article, I’ve got many more to read at https://articles.peterfox.me. I’m also now Sponsorable on GitHub. If you’d like to encourage me to write more articles like this please do consider dropping a small one-off donation.

以上がコードリファクタリングのマスター: Rector PHP の使用に関する完全ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。