Beranda » Pengembangan & Desain Web » Pemrograman Dasar » PHP 8. Apa kelebihan dan fitur barunya?
PHP 8. Apa kelebihan dan fitur barunya?11 Maret 2021 7 mnt dibaca
PHP 8 dirilis pada 26 November 2020. Dibandingkan pendahulunya, versi terbaru bahasa pemrograman ini lebih lengkap, baik dari segi fitur, performa, maupun error correction.
Apa itu PHP8? . Mari baca artikel ini sampai akhir
Daftar Isi
Apa itu PHP8?
PHP 8 adalah pembaruan dari PHP 7. 4 yang akan menghentikan dukungan aktif pada November 2021. Berbeda dengan PHP7. 4 yang hanya merupakan update minor, PHP 8 merupakan update mayor dari bahasa pemrograman PHP.
Apa yang dimaksud dengan pembaruan besar? . Beberapa fitur andalannya adalah Just In Time Compiler, Weak Maps, dan Named Arguments
Penasaran ingin tahu fitur lengkap dan berbagai kelebihannya?
Baca juga. Cara Membuat Website dengan PHP
10+ Fitur dan Keuntungan PHP 8
Berikut ini adalah fitur-fitur baru di PHP 8 yang tentunya akan memudahkan pekerjaan Anda.
1. Kompiler JIT (Just In Time).
JIT Compiler adalah teknik untuk meningkatkan kinerja program yang ditafsirkan. Karena sebelum program dijalankan, JIT Compiler sudah mengkompilasi program menjadi kode bahasa mesin.
Dengan teknik JIT Compiler, eksekusi kode jauh lebih cepat daripada versi interpreter PHP sebelumnya. Bagaimana proses interpretasinya?
Pada compiler PHP sebelumnya, interpreter akan melakukan proses parsing, kompilasi dan eksekusi kode. Proses tersebut berulang setiap kali ada permintaan script. Itu menyebabkan pemborosan ruang CPU
Namun JIT Compiler PHP 8 memiliki kode mesin aktual yang dapat bekerja dengan OPCache. Jadi, ketika ada request script dan cache sudah tersedia di OPCache, maka script akan langsung diteruskan ke CPU untuk dikompilasi.
Selain itu, JIT Compiler PHP 8 memiliki dua mesin kompilasi JIT yaitu function dan tracing. JIT berbasis fungsi akan mengoptimalkan kode hanya dalam satu fungsi cakupan. Sementara itu, JIT berbasis pelacakan mengoptimalkan seluruh pelacakan dan pencarian kode.
Saat fitur JIT Compiler diaktifkan, fitur tersebut dapat meningkatkan performa aplikasi berbasis PHP sebesar 3-5%. Sedangkan kinerja aplikasi PHP standar akan meningkat 3 kali lebih cepat
2. Peta Lemah
Peta Lemah adalah struktur data yang dapat mengakomodasi objek. Berbeda dengan Referensi Lemah di PHP 7. 4, Peta Lemah juga dapat menghapus cache dari objek yang tidak lagi dirujuk.
Di PHP, ketika variabel dari suatu objek dihapus, akan ada pemeriksaan referensi ke objek tersebut. Jika tidak ada variabel lain, berarti aman untuk menghapus objek tersebut
Nah, dengan adanya fitur Weak Maps di PHP 8, proses penghapusan menjadi lebih otomatis. Berikut adalah contoh penggunaannya
<?php class ReviewList { private WeakMap $cache; public function __construct() { $this->cache = new WeakMap(); } public function getReviews(Product $prod): string { return $this->cache[$prod] ??= $this->findReviews($prod->id()); } protected function findReviews(int $prodId): array { // ... } } $reviewList = new ReviewList(); $prod1 = getProduct(1); $prod2 = getProduct(2); $reviews_p1 = $reviewList->getReviews($prod1); $reviews_p2 = $reviewList->getReviews($prod2); // ... $reviews_p1_again = $reviewList->getReviews($prod1); unset($prod1);
Dalam contoh di atas, ketika referensi ke Produk1 tidak ada, referensi di class Number { public function __construct( private int|float $number ) {} } new Number('NaN'); // TypeError 1 Peta Lemah segera dihapus termasuk yang ada di objek Tinjauan. Dengan cara ini penggunaan memori menjadi lebih efisien karena proses caching dilakukan tanpa penambahan logika lain seperti destruktor dan lain-lain.
3. Tipe Serikat
Jenis serikat adalah nilai yang memiliki representasi yang sama dalam suatu posisi dan dapat menerima beberapa jenis variabel. Nah, karena PHP mendukung Union Type, kamu bisa mendeklarasikan variabel dalam beberapa tipe
- Ketik atau null, menggunakan sintaks khusus class Number { public function __construct( private int|float $number ) {} } new Number('NaN'); // TypeError 2
- array atau Traversable, menggunakan tipe khusus dari iterable
Di versi PHP sebelumnya, tipe gabungan arbitrer tidak didukung oleh bahasa. Jadi programmer cenderung menggunakan anotasi PHPDoc sebagai solusi.
Untungnya, tipe gabungan sekarang hadir secara native di PHP 8. Jadi, Anda tidak perlu lagi menggunakan anotasi PHPDoc. Anda dapat mengatur beberapa jenis parameter dengan sintaks T1. T2. .. di semua posisi
Ada beberapa keuntungan dari tipe serikat pekerja. Pertama, karena jenis nilai parameter dapat diatur sendiri, Anda dapat menghindari kemungkinan kesalahan dengan lebih baik. Kedua, jenis informasi yang kurang update juga bisa dihindari
Berikut adalah contoh perbandingan penggunaan tipe union di PHP
PHP 7
class Number { /** @var int|float */ private $number; /** * @param float|int $number */ public function __construct($number) { $this->number = $number; } } new Number('NaN'); // Ok
PHP 8
class Number { public function __construct( private int|float $number ) {} } new Number('NaN'); // TypeError _
Seperti pada contoh di atas, PHP 7 masih menggunakan anotasi PHPDoc sebagai berikut
/** * @param float|int $number */ public function __construct($number) { $this->number = $number; }
Sedangkan pada PHP 8 format sintaks lebih sederhana
public function __construct( private int|float $number ) {} _
Dengan fitur Union Type, penulisan sintaks menjadi lebih sederhana dan membuat deklarasi tipe lebih mudah dibaca.
Baca Juga. Editor PHP Terbaik. Yang Mana Pilihan Anda untuk Tahun 2021?
4. Penggunaan. Kelas Untuk Objek
Di versi sebelumnya, Anda harus menggunakan get_class() untuk menyetel kelas ke objek. Tetapi pada PHP 8, Anda dapat menggunakan. kelas ke objek untuk memastikan kode sumber lebih ramping.
Untuk kejelasan, perhatikan contoh di bawah ini
$object = new stdClass; var_dump($object::class); // "stdClass" $object = null; var_dump($object::class); // TypeError
5. Operator NullSafe
Sebelumnya, untuk mengecek nilai null pada PHP 7, Anda harus memasukkan kode is_null pada beberapa baris kode berulang kali. Di bawah ini adalah contohnya
PHP 7
<?php $user = get_user($id); if (!is_null($user)) { $address = $user->getAddress(); if (!is_null($address)) { $state = $address->state; If (!is_null($state)) { // And so on. } } } } _
Nah, dengan PHP 8 kamu bisa menggunakan fitur NullSafe Operator. Fitur ini memungkinkan Anda memanggil metode operator ?-> untuk memeriksa nilai null
$country = $session?->user?->getAddress()?->country; _
Artinya, dengan menggunakan fitur ini, Anda dapat mendeteksi null dalam elemen rantai. Jika null ditemukan dalam rantai, maka proses eksekusi akan segera dibatalkan. Misalnya seperti ini
<?php $bestSaleItem=$catalog?->getProducts(get_seasonal_type())?->mostPopular(10)[5];
Jika $catalog null, get_seasonable_type() tidak akan dipanggil. Seluruh rantai akan berhenti saat mendeteksinya dan segera menyetel $bestSaleItem ke nol.
6. Promosi Properti Konstruktor
Fitur baru selanjutnya dari PHP 8 adalah Constructor Property Promotion. Fitur ini berfungsi untuk mengurangi penulisan atribut yang berulang pada class constructor. Di bawah ini adalah contohnya
class Point { public function __construct( public float $x = 0.0, public float $y = 0.0, public float $z = 0.0, ) {} }
Hal-hal berbeda di PHP 7 di mana semua properti harus diulang beberapa kali sebelum Anda dapat menggunakannya dengan objek. Misalnya seperti ini.
class Number { /** @var int|float */ private $number; /** * @param float|int $number */ public function __construct($number) { $this->number = $number; } } new Number('NaN'); // Ok 0
Nah, dengan adanya fitur Constructor Property Promotion di PHP 8, penulisan atribut menjadi lebih singkat, lebih mudah dibaca dan tidak terlalu rawan error.
Namun, fungsi ini hanya dapat digunakan pada parameter yang dipromosikan seperti parameter yang dimulai dengan publik, dilindungi, dan pribadi
7. Argumen bernama
Di PHP versi 7. 4, Anda perlu memperhatikan urutan pemberian argumen untuk mengirim argumen ke suatu fungsi. Tapi di PHP 8, Anda bisa mengirim argumen ke fungsi menggunakan nama pengidentifikasi.
Misalnya, jika Anda ingin menetapkan nilai argumen ke-7 (http_only) di PHP 7. Anda perlu mengirimkan nilai dari argumen sebelumnya. Ini karena argumen dibaca berdasarkan urutan. Jadi, Anda harus mengirim argumen ke-1 hingga ke-6
class Number { /** @var int|float */ private $number; /** * @param float|int $number */ public function __construct($number) { $this->number = $number; } } new Number('NaN'); // Ok 1
Tapi ini tidak berlaku untuk argumen bernama PHP 8. Argumen yang dikirim memiliki nama sehingga urutan argumen tidak berpengaruh. Artinya, Anda hanya perlu menuliskan nilai yang ingin Anda ubah.
class Number { /** @var int|float */ private $number; /** * @param float|int $number */ public function __construct($number) { $this->number = $number; } } new Number('NaN'); // Ok 2
Dengan Name Arguments di PHP 8, proses coding menjadi lebih mudah. Karena pengidentifikasi saat argumen diteruskan ke fungsi akan memperjelas pembacaan kode. Selain itu, kode dapat didokumentasikan secara mandiri.
8. Cocokkan Ekspresi
PHP 8 memperkenalkan fitur Match Expression. Fitur ini mirip dengan Switch on PHP 7. Perbedaannya adalah Match Expression memiliki sintaks yang lebih sederhana dan lebih aman.
Selain perbedaan utama, perbedaan lain antara Match dan Switch adalah sebagai berikut
- Ekspresi yang cocok dapat mengembalikan nilai
- Ekspresi kecocokan hanya mendukung satu ekspresi dan tidak memerlukan pernyataan break;
- Ekspresi pencocokan melakukan perbandingan yang sangat ketat
Contoh perbedaan Switch dan Match dalam penggunaannya adalah sebagai berikut
PHP 7
class Number { /** @var int|float */ private $number; /** * @param float|int $number */ public function __construct($number) { $this->number = $number; } } new Number('NaN'); // Ok _3
PHP 8
class Number { /** @var int|float */ private $number; /** * @param float|int $number */ public function __construct($number) { $this->number = $number; } } new Number('NaN'); // Ok _4
Contoh penggunaan Switch pada PHP 7 di atas menunjukkan output yang mengacu pada nilai, meskipun bukan tipe datanya, yaitu "Oh tidak. ”
Sedangkan pada Match PHP 8, ketika Anda memasukkan tipe data yang sama, maka akan muncul output yaitu “Ini yang saya harapkan”. Saat Anda memasukkan tipe data yang berbeda, pesan kesalahan akan muncul
9. Atribut
Atribut adalah cara untuk mendeskripsikan informasi dan konfigurasi tambahan, sehingga dapat dibaca oleh mesin pada deklarasi di dalam kode
Di versi sebelumnya, Anda mendokumentasikan parameter dan nilai menggunakan PHPDoc. Nah, fitur Attributes pada PHP 8 memudahkan Anda untuk menggunakan structured metadata dengan sintaks native PHP.
Berikut perbandingannya
PHP 7
class Number { /** @var int|float */ private $number; /** * @param float|int $number */ public function __construct($number) { $this->number = $number; } } new Number('NaN'); // Ok 5
PHP 8
class Number { /** @var int|float */ private $number; /** * @param float|int $number */ public function __construct($number) { $this->number = $number; } } new Number('NaN'); // Ok 6
10. String Numerik
Pada versi sebelumnya, membandingkan string dengan angka dilakukan dengan mengubah string menjadi angka. Kemudian lakukan perbandingan antara integer atau float. Metode ini rentan terhadap bug atau masalah keamanan.
Numeric Strings membuat PHP 8 lebih baik dari versi sebelumnya. Karena string numerik mengubah string menjadi angka sebelum melakukan perbandingan. Tujuannya adalah untuk menghindari kesalahan perbandingan.
Alhasil, cara ini bisa memperbaiki bug atau masalah keamanan di versi sebelumnya
Baca Juga. 7 Tips Keamanan PHP yang Harus Anda Baca
Berikut adalah contoh perbandingan antara PHP 7 dan PHP 8 yang menunjukkan hasil perbandingan sederhana
PHP 7
class Number { /** @var int|float */ private $number; /** * @param float|int $number */ public function __construct($number) { $this->number = $number; } } new Number('NaN'); // Ok _7
PHP 8
class Number { /** @var int|float */ private $number; /** * @param float|int $number */ public function __construct($number) { $this->number = $number; } } new Number('NaN'); // Ok 8
Contoh PHP 7 menunjukkan bahwa bilangan bulat 0 (nol) sama dengan '0'. Ini berarti tipenya adalah tipe string dengan output yang sebenarnya. Sedangkan pada PHP 8 kondisi yang sama akan menghasilkan keluaran yang salah karena adanya tipe data yang berbeda
11. Kesalahan tipe yang konsisten untuk fungsi internal
Saat Anda membuat kesalahan pengiriman jenis, yang ditentukan pengguna dan fungsi internal akan mengirim pesan yang berbeda. Fungsi yang ditentukan pengguna mengirimkan pesan TypeError. Sementara fungsi internal mengirim berbagai pesan berbeda.
Ini mungkin menyulitkan Anda untuk mengidentifikasi lokasi dan penyebab kesalahan atau kesalahan. Nah, PHP 8 menghadirkan solusinya dengan fitur kesalahan tipe yang konsisten untuk fungsi internal
Fitur ini akan menampilkan pesan kesalahan dan menempatkan kesalahan ketika terjadi kesalahan pengkodean. Kesalahan ditunjukkan dengan TypeError. … atau ValueError. …
Dengan fitur ini, Anda bisa mengetahui letak kesalahannya. Selain itu, Anda juga akan mengetahui cara memperbaiki pernyataan kesalahan tersebut
Berikut adalah contoh penggunaan fitur ini
PHP 7
class Number { /** @var int|float */ private $number; /** * @param float|int $number */ public function __construct($number) { $this->number = $number; } } new Number('NaN'); // Ok _9
PHP 8
class Number { public function __construct( private int|float $number ) {} } new Number('NaN'); // TypeError _0
Seperti yang terlihat pada contoh di atas, pesan kesalahan yang muncul di PHP 8 diperbaiki agar lebih konsisten untuk semua jenis parameter yang tidak valid
Niagahoster sudah mendukung PHP 8
Setelah mempelajari fitur-fitur di atas, Anda pasti akan mengetahui keunggulan PHP 8 dibanding pendahulunya. Bagaimana?
Jangan khawatir, semua server di Niagahoster kini mendukung PHP 8. Hal ini tentunya akan membuat website Anda up-to-date, aman dan memiliki performa yang baik.
Hanya saja, PHP 8 belum menjadi default setting server di Niagahoster. Alasannya adalah versi baru mungkin tidak diperlukan di beberapa situs web terkait kompatibilitas.
Namun, jika Anda tertarik untuk menggunakan PHP 8, Anda dapat langsung mengubah versi PHP melalui cPanel. Jangan lupa untuk melakukan langkah backup untuk menghindari kehilangan data
Bagaimana cara mengubahnya?
Masuk ke cPanel hosting Anda. Selanjutnya, scroll ke bawah ke bagian Software dan pilih menu Select PHP Version.
Kemudian, klik drop down yang bertuliskan 7. 4 (saat ini) dan pilih versi 8. 0 di bagian versi PHP saat ini
Pengaturan ini akan disimpan secara otomatis hingga server Anda menggunakan PHP versi 8.
Baca juga. PHP 8. 1 telah dirilis. Lihat Fitur Baru, Perubahan, Cara Upgrade
Apakah Anda Siap Beralih ke PHP 8?
PHP 8 menawarkan banyak fitur yang akan membuat pekerjaan Anda lebih mudah. Tidak hanya menawarkan penulisan script yang lebih sederhana dan jelas, performa website dengan PHP 8 diharapkan bisa jauh lebih cepat.
Beberapa fitur utama yang ditawarkan oleh PHP 8 beserta fungsinya adalah sebagai berikut
- Just In Time Compiler – meningkatkan kinerja program yang ditafsirkan
- Peta Lemah – bersihkan objek yang tidak lagi direferensikan
- Union Type – memungkinkan Anda mendeklarasikan variabel dalam beberapa tipe
- Class for Object – merampingkan kode sumber
- Operator NullSafe – mendeteksi nol dalam elemen rantai
- Promosi Properti Konstruktor – mengurangi penulisan atribut berulang
- Argumen Bernama – meneruskan argumen ke fungsi menggunakan nama
- Cocokkan Ekspresi - memiliki fungsi yang mirip dengan Beralih tetapi dapat mengembalikan nilai
- Atribut – menjelaskan informasi dan konfigurasi tambahan, sehingga dapat dibaca oleh mesin pada deklarasi dalam kode
- String Numerik - mengubah string menjadi angka sebelum melakukan perbandingan, sehingga perbandingan lebih ketat dan kesalahannya minimal
- Jenis Kesalahan yang Konsisten untuk Fungsi Internal - menampilkan pesan kesalahan dan menempatkan kesalahan saat ada kesalahan pengkodean
Nah, jika Anda sudah siap menggunakan PHP 8 untuk website Anda, tunggu apa lagi?
Membagikan
Salsabila Annisa Ikuti SEO Content Writer di Niagahoster. Dia mengembangkan keterampilan menulisnya setelah bertahun-tahun pengalaman dalam jurnalisme.
Berlangganan sekarang
Dapatkan berbagai artikel tutorial, insight dan tips menarik seputar dunia online langsung melalui email Anda. Berlangganan sekarang dan raih kesuksesan bersama kami