- GitHub - rectorphp/rector: Instant Upgrades and Automated Refactoring of any PHP 5.3+ code
- Instant Upgrades and Automated Refactoring of any PHP 5.3+ code - rectorphp/rector
Saat melihat situs Gnuboard5, sebuah CMS PHP di Korea, saya menemukan beberapa postingan yang mengeluhkan kesulitan akibat sintaks dan versi yang sudah tidak didukung setelah peningkatan versi PHP.
Kemudian, saya mencari tahu...
di Reddit, dan menemukan bahwa alat bernama Rector dapat membantu migrasi. Oleh karena itu, saya akan memperkenalkan cara penggunaannya.
Sejak PHP 7.0 dirilis pada tahun 2015, telah muncul beberapa alat migrasi PHP, seperti php cs-fixer dan Rector.
Rector tampaknya lebih mudah digunakan.
Rector (diucapkan: Rektor) memeriksa sintaks kode PHP 5.3 hingga 8.2 dan memperbaikinya sesuai dengan versi yang diinginkan.
Satu kekurangan Rector adalah karena merupakan alat analisis statis, sehingga tidak dapat mendeteksi kesalahan yang terjadi pada saat runtime.
Rector memerlukan Composer, alat manajemen paket PHP, yang sudah terpasang.
1. Pasang Composer.
2. Pasang Rector di folder proyek Anda.
3. Buat file konfigurasi rector.php.
Pengaturan rector.php
Untuk mempermudah pemahaman, mari kita tetapkan skenario.
Misalkan kode sumber yang ditargetkan adalah kode PHP 5.3, dan versi yang ingin ditingkatkan adalah PHP 7.4.
Versi Rector yang digunakan adalah 1.0.3.
RectorConfig::config() digunakan untuk mengatur folder kode sumber dan versi PHP.
Fungsi withPhpSets digunakan untuk mengatur fungsi PHP yang ingin ditingkatkan.
Jika versi PHP yang menjalankan Rector adalah PHP 8.0,
Anda dapat menetapkan versi PHP: true seperti ini.
Namun, jika versi PHP yang sedang berjalan adalah PHP 7.4 atau lebih rendah,
Anda tidak dapat menggunakan sintaks parameter bernama pada fungsi, jadi Anda harus menetapkan true pada versi yang diinginkan.
Rector mendukung PHP 8.3, jadi untuk menetapkan PHP 7.4, lakukan seperti ini:
->withPaths([
__DIR__ , // Direktori tempat rector.php berada.
])
Tentukan aturan dan folder yang tidak ingin diterapkan.
Folder menggunakan format '/nama_folder/*'.
File menggunakan format 'nama_file'.
Aturan "SensitiveConstantNameRector" telah ditambahkan.
Rector tidak dapat menemukan indeks yang tidak terdefinisi dalam array PHP dan menganggapnya sebagai konstanta, sehingga dapat mengubahnya secara tidak semestinya. Oleh karena itu, aturan ini ditambahkan ke dalam pengecualian.
Aturan-aturan ini terkait dengan gaya kode, sehingga diabaikan.
Cara Menjalankan
Ada dua cara.
Perintah ini hanya akan menampilkan kode yang perlu diubah di konsol.
Semakin banyak kode sumber, semakin banyak RAM yang dibutuhkan, jadi Anda harus menetapkan penggunaan RAM dengan opsi --memory-limit=2G.
Perintah ini akan langsung memodifikasi kode sumber.
Karena ada banyak opsi, mungkin ada opsi yang tidak diinginkan yang diterapkan, jadi Anda perlu memeriksa dengan Git.
Komentar0