Upgrade dari PHP 7 ke PHP 8 membawa banyak perubahan, dan beberapa di antaranya bersifat breaking changes (perubahan yang bisa menyebabkan aplikasi lama tidak berjalan sebagaimana mestinya jika tidak diubah).
Berikut ringkasan mengapa upgrade dari PHP 7 ke 8 dianggap besar dan menyeluruh:
JIT (Just-In-Time Compilation): Meningkatkan performa, tapi bisa memengaruhi cara debugging dan profiling.
Union Types: Menambah fleksibilitas tapi bisa bentrok dengan kode lama.
Attributes (Annotations): Cara baru mendeklarasikan metadata yang bisa menggantikan komentar PHPDoc.
Banyak fungsi dan parameter yang diubah urutannya atau dihapus.
Fungsi-fungsi tertentu menghasilkan TypeError atau ValueError jika diberikan argumen yang salah, sedangkan di PHP 7 mungkin hanya mengembalikan false
.
Perubahan besar pada engine error handling: sekarang lebih ketat.
Beberapa ekstensi dan fungsi lama dihapus sepenuhnya (misalnya create_function()
dan each()
).
Script lama sering kali harus diperiksa satu per satu untuk memastikan:
Tidak ada penggunaan fungsi usang.
Tidak ada dependency yang tidak kompatibel.
Library pihak ketiga (composer packages) juga harus mendukung PHP 8.
Upgrade dari PHP 7 ke 8 bukan sekadar ganti versi di server, tetapi bisa melibatkan refactor besar-besaran pada kode. Sama halnya dengan buat aplikasi baru dari awal ibaratnya rumah yang sudah jadi harus dibongkar dan diupgrade pondasinya.