WordPress & PHP 8 – Kompatibilitas & manfaat!
Diterbitkan: 2021-01-04Sebagian besar tech-geeks senang dengan PHP 8.0, dan tentu saja, perubahannya sangat besar kali ini. semua orang akan menghabiskan waktu untuk memahami kompatibilitas, konfigurasi, manfaat, dll., dari PHP 8, dan di antara semuanya, salah satu pertanyaan terbesar yang muncul adalah – “apakah WordPress sudah kompatibel dengan PHP 8, dan jika tidak, maka tindakan apa yang diperlukan.”
Nah, segera setelah PHP 8 dirilis, waktu ahli kami terjun ke tingkat pengujian terdalam, dan hasilnya dapat mengejutkan siapa pun! Ya, kami tahu segalanya sekarang dan merasa senang untuk memamerkan laporan dan hasil pencicipan kami.
Tidak hanya kami akan menunjukkan semua yang telah berubah, tetapi juga memberikan saran murni mengenai apakah Anda harus memperbarui ke PHP 8 atau tidak.
Begitu banyak perubahan yang merusak di PHP 8: Tapi mengapa?
PHP 8 adalah pembaruan besar dari PHP, dan merupakan praktik umum untuk menghapus negatif di versi utama dari rentang versi minor terbaru. Untuk PHP 8 yang banyak dibicarakan, beberapa perubahan yang melanggar telah dikurangi di versi 7.* sebelumnya.
Oleh karena itu, untuk proyek yang diperbarui dengan penuh perhatian selama bertahun-tahun, memperbaiki API yang diturunkan, seharusnya tidak sulit untuk memutakhirkan sama sekali. Sejujurnya, versi PHP 7.* telah mengamati serangkaian penghentian yang jauh lebih besar dibandingkan dengan versi PHP sebelumnya.
Kami akan mengatakan PHP 5.6 ke PHP 7 adalah migrasi yang cukup sederhana, tetapi beralih dari 7.x ke 8 bisa agak menyakitkan, terutama untuk basis kode lama, termasuk WordPress, selain beberapa plugin yang tersedia.
Tentu saja, untuk basis kode yang diketik dengan baik atau basis kode yang up-to-date dengan versi PHP terbaru, masalah besar tidak akan terjadi. Namun, kenyataannya adalah bahwa WordPress bukanlah basis kode seperti itu.
Apakah WordPress sudah kompatibel dengan PHP 8?
Sejujurnya, mungkin WordPress sudah kompatibel dengan PHP 8, tetapi menyegel kata-kata itu tidak mungkin. Target WordPress untuk selalu kompatibel dengan PHP versi terbaru . Namun, kami telah menganalisis secara mendalam masalah terbesar nanti dalam panduan ini.
Kami telah melakukan pekerjaan luar biasa dalam menemukan perbaikan sempurna untuk sebagian besar masalah kompatibilitas yang dapat ditemukan menggunakan strategi yang tersedia. Kami pasti akan menyelami lebih dalam apa yang ada di sana dan masalah yang ada pada mereka.
Perubahan kinerja apa yang akan datang?
Fitur utama yang berpotensi menarik datang dengan PHP 8 adalah kompilasi dan debugging JIT (Just In Time). Seperti yang kita ketahui, PHP adalah bahasa interpreter, yang artinya diterjemahkan ke dalam kode mesin saat dijalankan.
JIT melacak kode yang sering digunakan dan bekerja untuk mengoptimalkan terjemahan kode mesin agar dapat digunakan kembali. Sekarang, ini dapat menghasilkan peningkatan kinerja yang besar untuk fungsi tertentu.
Dimasukkannya JIT dalam berbagai bahasa, misalnya JavaScript, secara historis telah menyebabkan ledakan aplikasi baru. Misalnya, mesin virtual yang berjalan di JS akan keluar dari imajinasi di hari-hari awal web. Beberapa tugas yang membutuhkan instalasi modul di server di masa lalu akan menjadi praktis menggunakan pustaka inti PHP.
Untuk saat ini, peningkatan kinerja sebenarnya untuk aplikasi web seperti WordPress adalah minimal. Selain itu, akan membutuhkan waktu yang lama sebelum seorang pengembang atau rata-rata pengguna WordPress mendapatkan keuntungan dari fitur baru ini.
Ada beberapa fitur baru lainnya untuk memberikan kemudahan bagi kehidupan para pengembang; sepertinya ini tidak akan digunakan dalam tema dan plugin WP di masa mendatang karena mayoritas akan merusak kompatibilitas dengan versi PHP sebelumnya yang masih digunakan oleh beberapa situs WordPress.
Bagaimana cara memperbarui PHP untuk situs WordPress Anda?
Dalam panduan ini, kami akan menjelaskan betapa mudahnya Anda dapat memperbarui PHP ke versi terbaru, yang terpenting, tanpa merusak situs WordPress Anda.
Jika Anda ingin mengetahui jalannya, maka cukup periksa versi PHP Anda saat ini, lalu Perbarui WordPress ke versi terbaru. Setelah itu, Instal "pemindai PHP one.com" dan jalankan pemindaian untuk memperbaiki potensi masalah. Selanjutnya, perbarui PHP ke versi terbaru, dan verifikasi apakah situs Anda berfungsi seperti yang diharapkan atau tidak.
Mari kita tunjukkan seluruh prosesnya.
Langkah 1: Periksa versi PHP Anda saat ini
Pada awalnya, Anda harus memeriksa versi PHP yang Anda gunakan saat ini. Anda bisa mendapatkan informasi versi PHP saat ini dari situs web Anda dari halaman phpinfo.
Jika Anda menjalankan cPanel, Anda dapat melihat versi PHP dari artikel cara melihat dan mengubah versi PHP di cPanel.
Jika Anda menggunakan PHP versi 7.3 atau lebih tinggi, maka semuanya baik-baik saja. Bagi mereka yang memiliki PHP 7.2, pembaruan diperlukan. Tolong hargai ke langkah 2.
Langkah 2: Perbarui WordPress ke versi terbaru
Pastikan inti WordPress dan semua plugin dan tema diperbarui ke versi terbaru jika Anda benar-benar ingin menghindari kerusakan apa pun.
- Masuk ke Admin WordPress Anda dan Klik Dasbor > Pembaruan .
- Periksa apakah Anda telah menginstal WordPress versi terbaru dan apakah semua tema dan plugin sudah diperbarui. Perbarui WordPress Anda ke versi terbaru sekarang.
Langkah 3: Instal "pemindai PHP one.com."
- Di Admin WordPress Anda , ketuk one.com > Plugin .
- Temukan pemindai PHP one.com dan ketuk Instal sekarang .
- Sekarang, klik Activate , dan lanjutkan ke langkah berikutnya.
Langkah 4: Jalankan pemindaian & perbaiki potensi masalah
- Di menu di sebelah kiri, ketuk pemindai PHP .
- Ketuk PHP versi 7.4 , lalu “ Semua tema dan plugin ,” lalu ketuk Mulai pemindaian .
- Anda dapat melanjutkan setelah pemindaian selesai.
- Anda dapat memiliki tiga hasil:
– Kompatibel = Artinya semuanya baik-baik saja!
– Peringatan = Ini berarti harus berfungsi tetapi mungkin memberikan masalah dengan versi PHP yang akan datang.
– Error = Kurang bagus, pasti akan menimbulkan masalah setelah update.
Perbaiki tema atau plugin yang membaca kesalahan, baik dengan memperbaruinya ke versi terbaru atau dengan menggantinya dengan plugin alternatif yang menyediakan fungsi yang sama.
Tip: Kami menyarankan Anda untuk menggunakan hanya plugin yang menggunakan plugin yang diperbarui secara berkala dan tidak membawa masalah kompatibilitas dengan versi terbaru WordPress. Selain itu, adalah praktik yang baik untuk menghapus plugin yang tidak diinginkan untuk meningkatkan kinerja situs.
Langkah 5: Perbarui PHP ke versi 8.0
Anda sekarang siap untuk memperbarui PHP. Kami menyarankan untuk mengaktifkan pesan kesalahan PHP secara bersamaan. Jika ada masalah dengan kode, Anda akan melihat pesan kesalahan yang memberi tahu Anda apa penyebabnya dan juga di mana tepatnya lokasinya.
- Di panel kontrol, kembali ke pengaturan PHP dan database .
- Gulir ke bawah ke pesan kesalahan PHP .
- Klik Perbarui setelah mengatur pesan kesalahan ke Aktif .
- Tepat di bawah ini, ubah versi dan ketuk Perbarui .
Langkah 6: Verifikasi apakah situs web Anda berfungsi seperti yang diharapkan.
Sekarang, Anda telah memperbarui versi PHP, dan akan memakan waktu minimal 20 menit sebelum perubahan diterapkan. Jika situs Anda menerima banyak pengunjung, jangka waktunya dapat diperpanjang hingga beberapa jam. Itulah alasan kami menyarankan untuk memeriksa situs web Anda minimal beberapa kali selama 24 jam mendatang.
Jika situs Anda tidak berfungsi seperti yang Anda harapkan, maka masalah yang paling mungkin adalah tema Anda atau plugin apa pun. Untuk mengetahui apa yang sebenarnya menyebabkan masalah:
- Untuk sementara beralih ke tema WordPress default, kami akan mengatakan, "Dua Puluh Tujuh Belas".
- Pilih semua plugin yang diinstal dan nonaktifkan semuanya.
- Aktifkan tema dan semua plugin lagi, satu per satu, dan terus periksa setiap kali apakah situs Anda masih berfungsi atau tidak. Anda bisa menangkap pelakunya dengan cara ini.
Jika kita berbicara secara teknis, maka kompatibilitas WordPress malam hari saat ini dengan PHP 8 yang banyak dibicarakan berada pada tingkat yang sama seperti yang kita miliki dari rilis WordPress tepat sebelum versi baru PHP muncul.
Pengujian kami sama pentingnya, perbaikannya sangat teliti, dan tingkat perbaikan masalah sama besarnya dengan perbaikan kompatibilitas PHP di dalam inti WordPress. Namun, jika Anda tidak mengikuti panduan ini, Anda tidak akan dapat memahami tantangan kompatibilitas dan menuai manfaat maksimal dari PHP 8.
Banyaknya perubahan yang melanggar dan jenis perubahan yang disertakan dalam PHP 8, selain beberapa kerumitan tambahan dalam perkakas lintas versi, tentu saja membuat tantangan kompatibilitas ini menjadi lebih besar dari apa yang telah kami alami sebelumnya dengan versi PHP sebelumnya. Laporan ini bertujuan untuk menjelaskan kasus yang sama.
Tantangan Kompatibilitas WordPress dan PHP8
Kami akan menunjukkan kepada Anda beberapa strategi yang dapat Anda terapkan untuk membuat basis kode yang ada kompatibel dengan PHP 8.
- Alat analisis statis seperti PHPCompatibility untuk mendeteksi masalah sintaksis.
- Pengujian otomatis untuk mendeteksi masalah runtime.
- Pengujian manual untuk mendeteksi masalah runtime.
Bergantung pada cakupan rangkaian pengujian Anda dan proporsi perubahan sintaksis dan waktu proses, strategi ini berfungsi dengan baik untuk memperbaiki kompatibilitas basis kode dengan versi baru PHP (saat ini membahas PHP 8).
Sebenarnya, dalam kasus PHP 8 dan WordPress, ada beberapa tantangan tambahan yang membuat sulit untuk mengandalkan strategi ini untuk memastikan kompatibilitas sempurna WordPress dengan PHP 8. Di bawah ini kami akan melaporkan strategi yang telah kami terapkan untuk WordPress dan bagikan hasilnya.
Alat analisis statis
Karena sifat dari beberapa perubahan dalam PHP 8.0, masalah yang dapat dideteksi menggunakan analisis statis terbatas. Dalam keadaan seperti itu, di mana analisis statis terlihat melampaui potensi tradisional dan rencana untuk melacak nilai variabel dan konstanta dan jenis runtime, hasil pemindaian seperti itu pasti akan rentan terhadap kesalahan positif.
Selain itu, Kompatibilitas PHP adalah satu-satunya alat analisis statis yang dimaksudkan untuk menemukan masalah terkait kompatibilitas lintas versi PHP.
Selain Kompatibilitas PHP, alat analisis statis lainnya melaporkan cakupan masalah yang lebih besar. Menghargai hasil untuk mendeteksi masalah, yang terkait dengan kompatibilitas lintas versi PHP dan benar-benar benar, cukup memakan waktu dan membutuhkan pengetahuan terkait perkakas yang mendalam, terutama tentang mengonfigurasinya untuk jumlah noise yang paling sedikit.
Secara bersamaan, alat-alat ini berada dalam ketidakstabilan konstan, mencoba untuk melanjutkan dengan perubahan dalam versi PHP dan memperbarui kemungkinan pemindaian. Oleh karena itu, kami dapat mengharapkan alat ini untuk mendeteksi lebih banyak masalah di masa mendatang.
Jadi terlepas dari apa yang telah dan dapat ditemukan lebih lanjut saat ini, kemungkinan alat ini masih akan menemukan lebih banyak masalah dalam (dekat) mendatang.
Memindai WordPress dengan PHPCompatibility
“__destruct() tidak akan dipanggil setelah die() di __construct() lagi” adalah masalah PHP 8 lain yang ditemukan oleh PHPCompatibility. Ini terdeteksi dengan sempurna oleh pemindai. Namun, setelah dianalisis lebih lanjut, ternyata tidak bermasalah dalam kasus ini.
Selain itu, PHPCompatibility mendeteksi adanya masalah pada kode yang digunakan oleh “Plugin/Theme editor”. Analisis kode yang terlibat telah menentukan keberadaan pengawasan yang mendasari dalam kode. Di editor, WordPress berharap untuk melakukan analisis minimum kode; namun, itu tidak memperhitungkan kode PHP 5.3+.
Sambil mempertimbangkan perubahan yang relevan dalam PHP8, pengawasan ini sekarang dibuat lebih rumit untuk dipecahkan. Kami menjalankan pemindaian dengan PHPCompatibility dengan versi yang dikembangkan, dan hasilnya, seperti yang kami harapkan, jauh berbeda dari apa yang kami peroleh dengan pembaruan PHP sebelumnya. Masalah yang terdeteksi oleh pemindai dipertahankan secara eksternal.
Memindai WordPress dengan Exakat
Berbicara tentang pemindaian publik terbaru yang terjadi pada 16 Oktober, berdasarkan batang WP, Exakat melaporkan total 149.567 masalah.
Laporan kompatibilitas PHP 8 menunjukkan kepada kita total 93 masalah. Namun, itu tidak lengkap karena nomor analisis yang relevan untuk PHP 8 tidak disertakan dalam laporan.
Meskipun kami berharap laporan ini berisi banyak kesalahan positif karena WordPress tidak menggunakan deklarasi tipe, dan oleh karena itu tipe diekstrapolasi dari kode yang ditemukan dan tipe yang ditampilkan di docblock, masalah ini masih harus diperiksa satu per satu.
Tidak peduli hanya 1% dari masalah yang ditemukan benar yang masih akan menurun menjadi ~450 kesalahan, yang masih perlu ditangani. Selain itu, banyak waktu yang dibutuhkan untuk menyingkirkan isu-isu otentik dari positif palsu.

Memindai WordPress dengan PHPStan
Pemindaian dengan PHPStan memerlukan seperangkat aturan yang sepenuhnya disesuaikan untuk mencapai hasil yang dapat digunakan dari jarak jauh, dan tetap saja, mereka terbukti penuh dengan beberapa kesalahan positif, membuat output tidak dapat digunakan.
Catatan: Kami tidak mengkritisi tooling PHPStan, tapi itu karena fakta bahwa WordPress hampir tidak menggunakan deklarasi tipe, sementara di sisi lain, PHPStan lebih condong ke proyek yang menggunakan kode modern, bukan?
Pemindaian awal yang terdiri dari konfigurasi paling dasar akan menghasilkan 20.000+ masalah. Pemindaian dengan kumpulan aturan yang disebutkan di atas yang sangat disesuaikan, ditargetkan pada masalah terkait PHP 8 secara khusus, masih menghasilkan persis 580 masalah di level 5 dan tambahan 2.150 masalah potensial di level 7. Ini kemungkinan akan berisi beberapa kesalahan positif dan belum menghasilkan 380 masalah lagi di level 8 dengan peringatan serupa.
Tiket Trac baru-baru ini dibuka untuk mengatasi daftar masalah berdasarkan konfigurasi yang tidak diketahui, tetapi sepenuhnya ditargetkan yo melewati ketidakcocokan jenis parameter (level 5). Draft PR tersedia untuk memperbaiki masalah ini.
Penilaian awal dari PR ini menunjukkan bahwa sebagian besar perbaikan yang diusulkan akan memasukkan variabel ke tipe yang diharapkan dan menyembunyikan masalah, tidak benar-benar memperbaikinya dengan memeriksa dengan benar. Hal ini menyebabkan perilaku tak terduga dalam aplikasi jika perubahan ini tidak disertai dengan pengujian unit yang ketat. Selain itu, kemungkinan besar menghasilkan peningkatan kesulitan saat men-debug kesalahan lebih jauh ke depan.
Saat ini, tidak dapat dikonfirmasi apakah perbaikan yang diusulkan dibenarkan atau bahwa masalah yang diidentifikasi harus dianggap sebagai positif palsu.
Pengujian
Analisis statis bisa berjalan sejauh ini karena sifat swap bermasalah di PHP8. Meninjau dan menguji perangkat lunak secara manual terbukti merupakan pekerjaan yang sangat melelahkan, dan manusia juga cenderung mengabaikan hal-hal ketika ada banyak hal yang harus diwaspadai.
Sekarang, berbicara tentang pengujian yang dilakukan oleh pengguna akhir, mereka terbukti relatif tidak berguna, karena ini biasanya akan menghasilkan "jalur bahagia" yang sedang diuji. Jika kita ingin mencapai hasil yang lebih andal, maka kita memerlukan eksplorasi dan pengujian regresi yang komprehensif.
Memiliki tes otomatis berkualitas tinggi dan menjalankannya di PHP 8 lebih penting daripada apa pun. Ini akan menawarkan indikasi sempurna dari masalah PHP 8.0 yang diharapkan.
Sebagian besar tech-geeks senang dengan PHP 8.0, dan tentu saja, perubahannya sangat besar kali ini. setiap orang akan menghabiskan waktu untuk memahami kompatibilitas, konfigurasi, manfaat dll dari PHP 8, dan di antara semua, salah satu pertanyaan terbesar yang muncul adalah – “apakah WordPress sudah kompatibel dengan PHP 8, dan jika tidak, lalu tindakan apa yang harus dilakukan? dibutuhkan."
Nah, segera setelah PHP 8 dirilis, waktu ahli kami terjun ke tingkat pengujian terdalam, dan hasilnya dapat mengejutkan siapa pun! ya, kami tahu segalanya sekarang, dan merasa senang untuk memamerkan laporan dan hasil pengujian kami.
Mari kita beralih ke Menjalankan pengujian otomatis pada PHP 8 sekarang.
Menjalankan pengujian otomatis pada PHP 8
PHPUnit 9.3 adalah versi PHPUnit pertama yang secara resmi kompatibel dengan PHP 8.0, dan dirilis pada Agustus 2020. Nah, menjalankan rangkaian pengujian otomatis yang berjalan di PHP itu sulit karena alat de facto untuk pengujian unit.
Mendapatkan rangkaian pengujian otomatis untuk berjalan di PHP 8 membawa kita ke lubang kelinci berikutnya sebagai alat de facto untuk melakukan pengujian unit di dunia PHP; PHPUnit biasanya melakukan rilis besar setiap tahun, dengan setiap dukungan penurunan besar untuk versi PHP sebelumnya. Ini memperkenalkan perubahan yang melanggar, tetapi karena PHPUnit 9.3 secara resmi kompatibel dengan PHP 8.0, seperti yang kami sebutkan di atas, tidak perlu khawatir!
Kita tahu bahwa, minimal WordPress masih mendukung PHP 5.6. Untuk menjalankan pengujian pada PHP 8.0, rangkaian pengujian apa pun yang terkait dengan WordPress harus sepenuhnya kompatibel dengan PHPUnit 5 hingga PHPUnit 9. Tentu saja, perkakas dibuat untuk membantu Anda dalam hal itu; masih membutuhkan usaha dan waktu untuk mengimplementasikan alat-alat ini untuk membuat rangkaian pengujian yang kompatibel.
Menjalankan pengujian di PHP8 untuk WordPress Core
Tes untuk WP Core saat ini lulus dan berjalan terhadap PHP 8. Tes ini dilakukan pada versi yang diinstal komposer PHPUnit 7.5. Meskipun PHPUnit 9.3 adalah versi PHPUnit tertua yang secara resmi kompatibel dengan PHP 8.
Masalah terakhir ini telah diatasi dengan menyalin sejumlah file/kelas yang dipilih dari PHPUnit 9.3 ke test suite WordPress, tidak termasuk kelas asli PHPUnit dari generasi autoload Composer, mendukung penggunaan salinan dari PHPUnit 9.3 di test suite WordPress. Ini berfungsi, untuk saat ini, namun, kami menyebutnya solusi peretasan, dan mungkin tidak berkelanjutan di masa mendatang, selain pemeliharaan yang mungkin diperlukan saat ini.
Demi kualitas tes, ini tentu saja rendah untuk memulai, dengan pemeriksaan tipe longgar digunakan di sebagian besar kasus.
Semakin dalam, tiket Trac untuk mengatasi ini dibuka kembali pada tahun 2016. Mengingat kepatuhan jenis yang lebih ketat di PHP, tiket ini telah dipulihkan. Banyak pekerjaan telah dilakukan untuk mengurangi hal ini.
Saat kami menulis, ada sekitar 800 instance (676 assertEquals() ditambahkan ke 96 assertNotEquals()). Masih menggunakan pemeriksaan tipe longgar – turun dari 8000+ instans.
Sebagian, pernyataan tipe longgar yang tersisa adalah sah ketika objek dibandingkan; sebagian, ini tentu perlu ditangani. Namun, saat ini akan menyebabkan kegagalan pengujian. Yang terakhir ini menggarisbawahi kekurangan baik dalam pengujian, namun lebih sering, dalam kode yang diuji.
Menguji tema dan plugin
Hanya ada sebagian kecil dari plugin yang tersedia, yang dikembangkan secara profesional dan lebih populer dan, memiliki pengujian otomatis. Secara umum, ini mengkhawatirkan karena situs WordPress normal menjalankan hampir 19 atau 20 plugin. Cukup banyak situs yang berjalan dengan lebih banyak plugin! Memiliki pengujian otomatis untuk tema bahkan lebih jarang.
Mengizinkan rangkaian pengujian ini berjalan pada PHP versi 8. Dan juga sebelum wawasan dapat diperoleh mengenai kompatibilitas plugin dan tema dengan PHP 8 merupakan tantangan yang menantang.
Namun, sebagian besar plugin/tema yang memiliki jumlah minimum masalah PHP 8.0 dapat diharapkan. Kami berseru demikian karena tema/plugin tersebut menggunakan model pengembangan profesional.
Penyebab kekhawatiran yang lebih besar adalah banyaknya tes dan tema tanpa tes, karena ini lebih rentan bermasalah saat dijalankan dengan PHP 8.
Untuk tema dan plugin, yang memiliki pengujian, terutama ada dua jenis pengujian yang mungkin atau mungkin tidak mereka lakukan:
- Tes satuan . Tes mandiri yang "mengejek" WP untuk mengizinkan pengujian kode plugin. Kerangka kerja populer seperti BrainMonkey dan Mockery digunakan.
- Tes integrasi . Sekarang, tes Integrasi adalah tempat WordPress itu sendiri memuat sebelum kami menjalankan test suite, dan itu akan menggunakan kode WPcore dan berintegrasi dengan WP test suite.
Tes integrasi
Kami tahu WordPress telah memutuskan untuk tetap menggunakan PHPUnit 7.5. Apa artinya?
Nah, untuk tes integrasi untuk tema dan plugin, itu juga akan dilompati ke PHPUnit 7.5 (maksimum).
Tema dan plugin harus menyalin peretasan di WP core agar tes integrasi mereka berjalan dengan sempurna, atau sebagai alternatif, mereka harus menggunakan file di WP Core. Namun, mereka kemudian harus membuat autoloader khusus karena peretasan pembuatan autoload Composer yang sama tidak dapat digunakan.
Jika file asli PHPUnit perlu dicegah agar tidak dimuat, autoloader khusus seperti itu pasti harus di-bootstrap tepat sebelum file autoload Composer.
Tes unit
Untuk pengujian unit dengan bantuan Mockery atau BrainMonkey, PHPUnit > 8 diperlukan karena kerangka kerja Mockery yang tersedia untuk PHPUnit 7.x tidak kompatibel dengan PHP 8.0. Oleh karena itu, komparabilitas test suite ini adalah wajib dengan PHPUnit 5 hingga 9, yang tentunya menambah tantangan lain.
Bagaimana?
Versi PHPUnit yang berbeda diperlukan untuk menjalankan setiap rangkaian uji ketika kedua jenis rangkaian uji digunakan. Untuk memperburuk keadaan ini, plugin biasanya memiliki file composer.lock yang dikomit untuk memastikan bahwa dependensi runtime mereka berada pada versi tertentu yang dapat mereka andalkan dan yang sepenuhnya kompatibel dengan PHP 5.6.
Pada waktu-waktu tertentu, bagian terakhir ini diberlakukan dengan memiliki semacam konfigurasi platform php 5.6 dalam file composer.json. Itu juga berarti dependensi pengembang BrainMonkey, Mockery, PHPUnit, juga akan dikunci pada versi yang kompatibel dengan PHP 5.6. sekarang, itu pasti akan mencegah menjalankan tes pada PHP 8.0.
Anda dapat mengatasinya dengan segera menghapus platform selain memperbarui file composer.lock dan composer.json. Namun, ini membuat menjalankan tes pada PHP 8.0 lebih terlibat, baik di CI maupun lokal, untuk pengembangnya.
Kompatibilitas PHP 8 terlihat agak rumit di situs WordPress besar
Dengan hanya menyelidiki rantai perubahan yang melanggar di PHP 8, kami dapat mengonfirmasi bahwa ini cenderung menyebabkan kerusakan besar pada situs dengan alasan yang tidak jelas untuk kerusakan itu. Pada waktu tertentu, kesalahan akan terjadi di satu tempat tetapi dihasilkan oleh tema atau plugin di tempat yang berbeda, dan itu pasti akan membuat masalah ini cukup sulit untuk di-debug.
accuwebhosting.com tentu saja merupakan situs WordPress yang dipelihara secara aktif, dan tim pengembang profesional yang berdedikasi mendukungnya. Sebagian besar situs WordPress tidak memiliki kemewahan seperti itu, dan mengurangi masalah kompatibilitas di situs ini pasti akan menjadi tantangan.
Berapa lama pengembang harus memperbarui?
Siklus hidup Setiap versi PHP adalah 2 tahun, dan bug diperbaiki di era ini. Satu tahun lagi ditambahkan selama masalah keamanan ditambal. PHP 7.4 tiba pada November 2019. Itu adalah versi final dari PHP 7. Artinya, bug di PHP 7.4 akan diperbaiki hingga November 2021. Masalah keamanan akan ditambal hingga November 2022. Ini akan mencapai "Akhir Kehidupan" pada saat itu.
Oleh karena itu, tanggal batas akhir adalah November 2022: semua kode PHP harus kompatibel dengan PHP 8 pada saat ini, atau bahaya terjebak pada versi PHP yang berpotensi rentan.
Kesimpulan
PHP 8 akan berisi banyak perubahan yang melanggar. Kami telah menjelaskan berbagai perubahan tersebut dalam laporan kami, yang menurut para ahli kami akan memiliki dampak yang lebih besar pada WordPress selain ekosistem WordPress yang lebih luas. Mereka umumnya harus berurusan dengan peringatan yang menjadi masalah. Dan beberapa kesalahan diperkenalkan, yang mungkin sulit untuk ditangani. Anda dapat mendeteksi persentase yang lebih tinggi dari perubahan ini pada waktu proses.
Memperbaiki semua masalah kompatibilitas ini adalah tugas besar. Untuk mencapai itu, Anda perlu menggunakan berbagai strategi, mulai dari analisis statis hingga pengujian otomatis. Ini membutuhkan waktu + usaha yang besar.
Anda harus memiliki hak atas alat untuk melakukan semuanya dengan sempurna. Untuk proyek seperti WordPress, yang harus mendukung berbagai versi PHP, beberapa kerumitan tambahan diperkenalkan dalam menyulap berbagai versi alat analisis, seperti yang telah kita bahas di atas.
Tentu saja, ini menjadi sangat sulit karena runtime dan perbedaan sintaksis antara PHP 5 dan 8 menjadi sangat besar.
Apakah menggunakan PHP 8 di WordPress bagus atau tidak? Sebenarnya bukan argumen di sini. Satu-satunya kesimpulan di sini adalah – menjadi sangat menantang untuk melakukannya.
Selain itu, kami telah mempertimbangkan masalah cakupan dan dependensi PHP WordPress. Jika Anda ingin mendeteksi kompatibilitas dengan andal, maka cakupan pengujian yang tinggi terbukti diperlukan. Dan berbicara tentang PHP 8, itu bahkan lebih penting karena jumlah masalah kompatibilitas lebih tinggi dari biasanya. Sebagian besar dari mereka dapat dideteksi hanya pada saat runtime.
Jadi, apa yang kami sarankan?
Jika masalah terdeteksi, debugging ekstensif diperlukan untuk menemukan akar masalah, tidak peduli itu WordPress, Tema, Plugin, atau yang terkait langsung dengan kompatibilitas PHP.
Cakupan tes hampir tidak ada untuk dependensi dan rendah. Oleh karena itu, sulit untuk menyatakan apa itu kompatibilitas inti WordPress dengan PHP 8 dalam arti sebenarnya.
Karena PHP 8 sangat berkonsentrasi pada pengetikan yang ketat, sistem ekstensibilitas tidak aman tipe WP menjadi sangat rentan terhadap masalah, berpotensi menyebabkan plugin menghasilkan kesalahan tipe di plugin lain atau WP itu sendiri.
Kami mengujinya dengan menjalankan analisis pada data kesalahan bulan lalu. Sebagai situs besar, kami pikir itu mungkin memberikan indikasi kuat tentang jenis masalah yang dapat kami harapkan. Tentu saja, kami menemukan beberapa peringatan yang akan berkembang menjadi kesalahan dengan PHP 8.
Kami lebih suka membuat catatan terakhir di sini. WordPress bukan satu-satunya basis kode lama yang tersedia. Juga bukan satu-satunya proyek yang menargetkan untuk mendukung sejumlah besar versi PHP. Info dalam artikel ini mungkin juga berlaku untuk proyek lain.
Tujuan utama artikel dari Accuweb ini adalah untuk menginformasikan dan membuat tinjauan umum tentang tantangan dan masalah yang terkait dengan kompatibilitas PHP 8 di WP. Kami sangat berharap ini melayani tujuan ini dengan sempurna.