Rumah >pembangunan bahagian belakang >tutorial php >Menguasai Pemfaktoran Semula Kod: Panduan Lengkap Menggunakan PHP Rektor
Foto oleh Matteo del Piano di Unsplash
Dalam dunia pembangunan PHP yang sentiasa berkembang, memastikan pangkalan kod anda bersih, terkini dan cekap adalah penting. Di sinilah Rektor PHP berperanan. Jika anda tertanya-tanya cara menggunakan Rector PHP, cara memasangnya, atau apa sebenarnya Rector PHP, panduan komprehensif ini adalah untuk anda. Kami akan membimbing anda melalui asas, menyediakan tutorial PHP Rektor terperinci dan menawarkan cerapan tentang PHP Rector dan cara menggunakannya dengan berkesan. Pada penghujung artikel ini, anda akan mempunyai pemahaman yang kukuh tentang Rektor PHP dan cara ia boleh meningkatkan aliran kerja pembangunan anda.
Rektor telah dimulakan pada tahun 2020, tetapi hanya mendapat keluaran 1.0 pada tahun 2024. Ia adalah alat baris arahan yang melakukan analisis statik pangkalan kod. Daripada analisis itu perubahan boleh digunakan. Saya rasa contoh yang baik tentang ini ialah bagaimana jika pangkalan kod anda dipenuhi dengan panggilan array() apabila ini kini dianggap sebagai amalan lama, kini digantikan dengan [] sintaks tatasusunan pendek.
Melalui asas kod untuk menggantikan ini adalah membosankan. Kita boleh menggunakan alat cari dan ganti yang mudah tetapi bagaimana jika terdapat array() yang merangkum rentetan atau di dalam ulasan yang tidak sepatutnya diubah? Kini kami perlu menyemak setiap kejadian yang kami gantikan.
Masalah sebegini adalah kecemerlangan Rektor. Sebaliknya Rektor dapat melihat kod dan mengetahui secara pasti jika ia adalah tatasusunan yang akan diganti.
Anda mungkin bertanya, PHP CS Fixer juga boleh melakukan ini, yang benar. Tetapi Rektor juga mempunyai PHPStan bekerja di bawah hud untuk bukan sahaja mengenali sintaks tetapi juga menganalisis jenis. Ini bermakna Rektor boleh mengesan apabila Kelas mempunyai kelas induk tertentu, apabila pembolehubah ialah jenis tertentu atau jenis pulangan yang diharapkan bagi sesuatu fungsi. Memberi skop yang jauh lebih besar untuk membuat perubahan secara besar-besaran kepada pangkalan kod.
Ini mungkin kelihatan jelas kepada pembangun PHP yang berpengalaman tetapi terdapat dua cara utama dan ia bergantung pada cara anda mahu menggunakan Rektor.
Jika anda ingin menggunakan Rector sebagai sebahagian daripada penyepaduan berterusan, masuk akal untuk memasang Rector berbeza ke dalam projek anda melalui komposer.
composer require --dev rector/rector
Tetapi jika anda ingin bereksperimen dengan Rector pada satu atau beberapa projek untuk melakukan peningkatan, anda mungkin lebih baik dengan memasang Rector secara global dengan menggunakan
composer global require rector/rector
Mana-mana langkah yang anda pilih, langkah seterusnya ialah membuat konfigurasi dalam direktori akar untuk projek dan memasukkan semua folder yang mengandungi kod PHP yang ingin anda tingkatkan. Itu tidak termasuk folder vendor sudah tentu kerana kami tidak mahu mengubah suai itu.
Ini adalah konfigurasi untuk mengatakan projek Laravel mungkin kelihatan seperti:
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);
Seperti dalam bahagian terakhir, menggunakan Rektor boleh ditentukan oleh cara anda ingin menggunakannya. Rektor menggunakan perubahan melalui pemilihan Peraturan. Ini adalah sama seperti PHP CS Fixer. Peraturan ini akan mengesan isu tersebut dan kemudian cuba menyelesaikan masalah yang direka bentuk untuk diselesaikan.
Jika kami ingin menggunakan Rektor dalam cara penyepaduan berterusan, kerana kami ingin menggunakan semua kod adalah dioptimumkan sebaik mungkin semasa kami membangunkannya, kami mungkin hanya menggunakan set peraturan tertentu.
Rektor mempunyai set peraturan, sering digambarkan sebagai Kod Mati atau Kualiti Kod, yang masing-masing mengalih keluar kod atau meningkatkan dan mengoptimumkan. Adalah lebih baik untuk berpegang pada set ini sahaja kerana kita boleh yakin ia berfungsi pada kebanyakan masa. Tetapi anda harus benar-benar sedar bahawa cara Rektor menulis kod tidak pernah sempurna. Selalunya apabila peraturan ditulis, mereka mungkin merangkumi senario biasa dan mungkin terlepas beberapa keadaan mendapati ia adalah asas kod anda. Ini boleh menyebabkan kod rosak.
Sekiranya anda ingin menggunakan Rektor, anda mesti mempunyai ujian yang ditulis untuk permohonan anda. Tanpa mereka, Rektor boleh dengan mudah membawa kepada memperkenalkan pepijat yang anda tidak akan dapati sehingga ia menjadi masalah.
Perkara lain yang perlu dipertimbangkan semasa menggunakan Rektor ialah anda harus menggunakan alat linting seperti PHP CS Fixer. Rektor tidak melihat ruang putih, ruang dan baris baharu antara panggilan kaedah dan hujahnya, dsb. Menggunakan alat linting harus memastikan pemformatan kod mengikut standard yang anda harapkan selepas Rektor menggunakan pembetulannya.
Sekarang kami telah memasang Rektor dan kami bersedia untuk mencubanya, mari cuba gunakan satu peraturan. Mari mulakan dengan mengemas kini fail konfigurasi yang kami buat sebelum ini.
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, ]);
Dalam kes konfigurasi ini, kami akan membuat penggantian penggunaan senarai supaya sebaliknya kami menggunakan penstrukturan semula tatasusunan. Perubahan yang kami jangka akan lakukan adalah seperti berikut:
-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.
Atas ialah kandungan terperinci Menguasai Pemfaktoran Semula Kod: Panduan Lengkap Menggunakan PHP Rektor. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!