PHP 8 : Pengertian,Fitur Dan Keunggulannya
PHP memiliki tingkat popularitas yang semakin meningkat dan banyak website-website populer yang beralih dari bahasa pemrograman lain ke PHP.Kesederhanaan,efektivitas dan efisiensi merupakan faktor dibalik kepopuleran PHP.Seiring dengan semakin masifnya adaptasi PHP,komunitas dan forum-forum yang membahas segala hal terkait PHP juga semakin berkembang besar.Dukungan komunitas yang baik membantu para developer atau pemula untuk menemukan solusi dari masalah yang dijumpai saat membangun website menggunakan PHP.
PHP 8 diluncurkan pada 26 November 2020,versi terbaru bahasa pemrograman ini lebih lengkap,entah itu dari segi secara fitur,performa dan perbaikan pada error.Lalu apa si Definisi dari PHP 8 ? Apa saja fitur-fitur baru yang dimiliki ? Di artikel kali ini,kita akan menjelaskannya secara lengkap.
Pengertian PHP 8
Merupakan pembaharuan dari PHP 7.4 yang akan berhenti acitve supportnya.Berbeda dengan PHP 7.4 yang hanya minor update,PHP 8 merupakan sebuah major update dari bahasa pemrograman PHP.Sebuah major update yakni versi terbaru yang menawarkan performa lebih baik dengan adanya berbagai fitur baru.Beberapa fitur unggulannya adalah Just In Time Compiler, Weak Maps, dan Named Arguments.
Daftar Fitur-Fitur PHP 8 :
Berikut ini fitur-fitur pada PHP 8 yang akan memudahkan pekerjaan penggunanya :
Weak Maps
Weak Maps : struktur data yang dapat menampung objek.Berbeda dengan Weak Reference pada PHP 7.4, Weak Maps dapat membersihkan cache dari objek yang tak direferensikan lagi.Di PHP,ketika ada variabel dari objek dihapus,maka akan ada pengecekan referensi ke objek tersebut.Jika tidak ada variabel lain,artinya aman untuk menghapus objeknya.Dengan fitur Weak Maps pada PHP 8,proses penghapusan itu jadi lebih otomatis.
JIT (Just In Time) Compiler
JIT Compiler : suatu teknik untuk meningkatkan kinerja program yang diinterpretasikan.Sebab sebelum program dijalankan,JIT Compiler sudah mengkompilasi program menjadi kode bahasa mesin.Dengan teknik JIT Compiler,eksekusi kode menjadi lebih cepat dibanding interpreter PHP versi sebelumnya.
Di compiler PHP sebelumnya,interpreter melakukan proses mengurai,mengkompilasi dan eksekusi kode.Proses ini dilakukan berulang kali setiap ada request skrip.Hal ini tentu menyebabkan pemborosan ruang CPU.Namun JIT Compiler PHP 8 memiliki kode mesin aktual yang dapat bekerjasama dengan OPCache.Maka,saat ada request terhadap skrip dan cache sudah tersedia di OPCache,skrip ini akan langsung diteruskan ke CPU untuk dikompilasi.
JIT Compiler PHP 8 juga memiliki 2 mesin kompilasi JIT : function dan tracing.JIT berbasis function mengoptimalkan kode hanya dalam 1 fungsi lingkup saja.Sedangkan,JIT berbasis tracing mengoptimalkan seluruh pelacakan dan pencarian kode. Ketika fitur JIT Compiler tersebut diaktifkan,fitur ini dapat meningkatkan kinerja aplikasi berbasis PHP sebesar 3-5%. Sedangkan performa aplikasi standar PHP meningkat 3 kali lebih cepat.
Union Type
Union type : suatu nilai yang memiliki representasi sama di sebuah posisi serta dapat menerima beberapa jenis variabel,karena PHP mendukung Union Type,kalian dapat mendeklarasikan variabel dalam beberapa tipe :
- Type atau null,menggunakan sintaks khusus ?Type
- array atau Traversable,menggunakan tipe khusus iterable
PHP versi sebelumnya,jenis penyatuan arbitrer tidak didukung oleh bahasa itu,sehingga programmer cenderung menggunakan anotasi PHPDoc sebagai solusi.Untungnya kini,union type sudah hadir secara native di PHP 8.Jadi,kalian tidak perlu lagi menggunakan anotasi PHPDoc.Kalian dapat menetapkan beberapa tipe parameter dengan sintaks T1|T2|…di semua posisi.
Beberapa keuntungan dari union type :
- Karena tipe nilai parameter yang dapat ditetapkan sendiri,kalian dapat menghindari kemungkinan terjadinya error dengan baik.
- Dapat menhindari Informasi tipe yang kurang update.
Nullsafe Operator
Pengecekan nilai null di PHP 7 perlu membuat kalian memasukkan kode is_null pada beberapa baris kode berulang kali.
Di bawah ini adalah contoh dari PHP 7 :
<?php
$user = get_user($id);
if (!is_null ($user)) {
$address = $user-> getAddress();
if (!is_null_null($address)) {
$state = $address-> state;
If (!is_null ($state)) {
// And so on.
}
}
} }
Menggunakan PHP 8 kalian dapat menggunakan fitur NullSafe Operator.Fitur ini dapat melakukan metode pemanggilan operator ?-> untuk mengecek nilai null.
$country = $session?-> user?->getAddress()?->country;
Menggunakan fitur ini,kalian dapat mendeteksi null dalam suatu elemen rantai.Jika ditemukan null dalam rantai itu,maka proses eksekusi langsung dibatalkan.Contohnya seperti ini :
<?php
$bestSaleItem=$catalog?-> getProducts(get_seasonal_type())?->mostPopular(10)[5];
Jika $catalog merupakan null, get_seasonable_type() tidak akan dipanggil. Seluruh rantai akan berhenti setelah mendeteksinya dan langsung menetapkan $bestSaleItem ke null.
Menggunakan ::Class For Objects
Di versi PHP sebelumnya,kalian harus menggunakan get_class() untuk menetapkan kelas ke objek.Di PHP 8,kalian dapat menggunakan ::class to objects guna memastikan kode sumber jadi lebih ringkas.
Adapun contohnya di bawah ini :
$object = new stdClass;
var_dump ($object::class); // “stdClass”
object = null;
var_dump ($object::class); // TypeError
Named Arguments
Di Versi PHP 7.4,perlu memperhatikan urutan pemberian argumen untuk mengirimkan argumen ke sebuah fungsi.Namun di PHP 8,dapat mengirimkan argumen ke sebuah fungsi menggunakan nama pengenal.Misal jika ingin melakukan set nilai argumen ke-7 (http_only) pada PHP 7.Kalian perlu mengirim nilai argumen sebelumnya.Hal ini karena argumen dibaca berdasarkan urutan.Sehingga kalian harus mengirim argumen ke-1 sampai ke-6.
Hal ini tidak berlaku untuk named arguments PHP 8.Argumen yang dikirim memiliki nama sehingga urutan argumen tidak berpengaruh.Artinya,kalian hanya menulis nilai yang ingin diubah.Dengan adanya Name Arguments pada PHP 8 ini,proses coding lebih mudah.Sebab identifier ketika argumen dikirim ke fungsi akan memperjelas pembacaan kode. Selain itu, kode bisa terdokumentasi secara mandiri.
Constructor Property Promotion
Fitur ini berfungsi mengurangi penulisan atribut berulang pada class constructor.Pada PHP 7 dimana semua properti harus diulang beberapa kali sebelum kalian dapat menggunakannya dengan objek.Namun,dengan adanya fitur Constructor Property Promotion di PHP 8,penulisan atribut menjadi lebih pendek,lebih mudah dibaca dan tidak terlalu rentan terhadap error. Namun,fungsi ini hanya dapat digunakan pada promoted parameter seperti parameter yang diawali dengan public,protected, dan private.
Match Expression
Pada PHP 8 memperkenalkan fitur Match Expression,yang mana fitur ini mirip dengan Switch pada PHP 7.Perbedaannya,Match Expression memiliki sintaks lebih ringkas dan aman.
Perbedaan-perbedaan dengan Match dan Switch sebagai berikut :
- Match expression dapat mengembalikan value
- Match expression hanya mendukung ekspresi tunggal dan tidak membutuhkan pernyataan break;
- Match expression melakukan perbandingan yang sangat ketat
Nah,itulah beberapa penjelasan mengenai PHP 8,mulai dari definisi serta fiturnya.Sekian artikel kali ini,semoga dapat bermanfaat untuk kalian semuanya 🙂