Foto von Matteo del Piano auf Unsplash
In der sich ständig weiterentwickelnden Welt der PHP-Entwicklung ist es von entscheidender Bedeutung, Ihre Codebasis sauber, aktuell und effizient zu halten. Hier kommt Rektor PHP ins Spiel. Wenn Sie sich gefragt haben, wie Sie Rector PHP verwenden, wie Sie es installieren oder was genau Rector PHP ist, ist diese umfassende Anleitung genau das Richtige für Sie. Wir führen Sie durch die Grundlagen, stellen ein detailliertes Rector PHP-Tutorial zur Verfügung und bieten Einblicke in PHP Rector und wie man es effektiv nutzt. Am Ende dieses Artikels werden Sie ein solides Verständnis von Rector PHP haben und wissen, wie es Ihren Entwicklungsworkflow verbessern kann.
Rector wurde im Jahr 2020 gestartet, erhielt jedoch erst 2024 die Version 1.0. Es handelt sich um ein Befehlszeilentool, das eine statische Analyse einer Codebasis durchführt. Aus dieser Analyse können Änderungen übernommen werden. Ich denke, ein gutes Beispiel hierfür wäre, wenn Ihre Codebasis mit array()-Aufrufen durchsetzt wäre, obwohl dies heute als alte Praxis gilt und jetzt durch die kurze Array-Syntax [] ersetzt wird.
Es ist mühsam, eine Codebasis durchzugehen, um dies zu ersetzen. Wir könnten ein einfaches Such- und Ersetzungstool verwenden, aber was wäre, wenn ein Array() in einer Zeichenfolge oder in einem Kommentar enthalten wäre, der nicht geändert werden sollte? Jetzt müssen wir jede Instanz überprüfen, die wir ersetzen.
Diese Art von Problem ist es, was Rector hervorragend beherrscht. Stattdessen ist Rector in der Lage, sich den Code anzusehen und definitiv zu wissen, ob es sich um ein Array handelt, das ersetzt werden muss.
Sie fragen sich vielleicht, dass PHP CS Fixer dies auch kann, was stimmt. Aber Rector hat PHPStan auch unter der Haube im Einsatz, um nicht nur die Syntax zu erkennen, sondern auch Typen zu analysieren. Das bedeutet, dass Rector erkennen kann, wann eine Klasse eine bestimmte übergeordnete Klasse hat, wann eine Variable einen bestimmten Typ hat oder welchen Rückgabetyp eine Funktion erwartet. Dies gibt einen weitaus größeren Spielraum für Massenänderungen an einer Codebasis.
Das mag für erfahrene PHP-Entwickler offensichtlich erscheinen, aber es gibt zwei primäre Möglichkeiten und es hängt wirklich davon ab, wie Sie Rector verwenden möchten.
Wenn Sie Rector als Teil der kontinuierlichen Integration verwenden möchten, ist es sinnvoll, Rector anders über Composer in Ihre Projekte zu installieren.
composer require --dev rector/rector
Aber wenn Sie mit Rector in einem oder mehreren Projekten experimentieren möchten, um Upgrades durchzuführen, ist es möglicherweise besser, Rector global zu installieren, indem Sie
verwenden
composer global require rector/rector
Welchen Schritt Sie auch wählen, der nächste Schritt besteht darin, eine Konfiguration im Stammverzeichnis eines Projekts zu erstellen und alle Ordner einzuschließen, die den PHP-Code enthalten, den Sie aktualisieren möchten. Dazu gehört natürlich nicht der Vendor-Ordner, da wir ihn nicht ändern wollen.
So könnte eine Konfiguration beispielsweise für ein Laravel-Projekt aussehen:
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);
Wie im letzten Abschnitt kann die Verwendung von Rector dadurch bestimmt werden, wie Sie es verwenden möchten. Der Rektor nimmt Änderungen durch die Auswahl der Regeln vor. Dies ist dasselbe wie PHP CS Fixer. Diese Regeln erkennen das Problem und versuchen dann, das Problem zu beheben, das sie lösen sollen.
Wenn wir Rector in einer kontinuierlichen Integrationsweise verwenden möchten, weil wir den gesamten Code bei der Entwicklung so optimal wie möglich nutzen möchten, verwenden wir möglicherweise nur einen bestimmten Satz von Regeln.
Rector verfügt über Regelwerke, die oft als Dead Code oder Code Quality bezeichnet werden und die Code entfernen bzw. verbessern und optimieren. Es ist von großem Vorteil, nur bei diesen Sets zu bleiben, da wir sicher sein können, dass sie die meiste Zeit funktionieren. Sie sollten sich jedoch unbedingt darüber im Klaren sein, dass die Art und Weise, wie Rector Code schreibt, niemals perfekt ist. Wenn Regeln geschrieben werden, decken sie oft die typischen Szenarien ab und übersehen möglicherweise einige Umstände, die in Ihrer Codebasis enthalten sind. Dies könnte zu fehlerhaftem Code führen.
Falls Sie Rector einsetzen möchten, sollten Sie unbedingt Tests für Ihre Bewerbung schreiben lassen. Ohne sie kann Rector leicht zur Einführung von Fehlern führen, die Sie erst dann entdecken, wenn es sich um ein Problem handelt.
Eine weitere Sache, die Sie bei der Verwendung von Rector berücksichtigen sollten, ist, dass Sie ein Linting-Tool wie PHP CS Fixer verwenden sollten. Rector berücksichtigt keine Leerzeichen, Leerzeichen und Zeilenumbrüche zwischen Methodenaufrufen und deren Argumenten usw. Die Verwendung eines Linting-Tools sollte die Codeformatierung auf dem erwarteten Standard halten, nachdem Rector seine Korrekturen angewendet hat.
Jetzt haben wir Rector installiert und können es ausprobieren. Versuchen wir, eine Regel anzuwenden. Beginnen wir mit der Aktualisierung unserer zuvor erstellten Konfigurationsdatei.
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, ]);
Im Fall dieser Konfiguration werden wir die Verwendung von Listen ersetzen, sodass wir stattdessen eine Array-Umstrukturierung verwenden. Die Änderungen, die wir erwarten würden, sind wie folgt:
-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.
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.
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.
Das obige ist der detaillierte Inhalt vonCode-Refactoring beherrschen: Eine vollständige Anleitung zur Verwendung von Rector PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!