Mengenal PHP 8 : Fitur-Fitur Baru dan Keunggulannya
Apa saja
yang baru di PHP 8 ?
PHP 8 merupakan pembaharuan terbaru
untuk versi 8 dari bahasa pemrograman ini. Varian terbaru ini menawarkan
performa yang lebih baik dan berbagai fitur baru:
- 1. Named arguments
- 2. Attributes
- 3. Constructor property
promotion
- 4. Union Types
- 5. Match Expression
- 6. Nullsafe operator
- 7. Saner string to number
comparisons
- 8. Just In Time (JIT)
Compiler
- 9. WeakMap
1. Named
Arguments
Dengan fitur ini anda bisa menentukan
parameter yang dibutuhkan dan melewati parameter yang bersifat opsional. Ini menjadikan
sebuah function di PHP lebih ringkas. Salah satu kegunaan named arguments
adalah bisa digunakan untuk mengatasi error null pada pemrograman.
Contoh : createPerson()
|
function createPerson(string $name, int $age,
?string $major = null, ?string $gender = null) {} |
Sebelum
PHP 8
|
createPerson('Rina', 24, null, 'wanita'); |
Menggunakan
PHP 8
|
createPerson(name: 'Rina', age: 24, gender:
'wanita'); |
2. Attributes
Dengan Attributes versi terbaru dari
php 8 ini , Anda tidak perlu lagi mengurai PHP Docblock dan anda bisa
menggunakan struktur pada metadata pada php 8 di native syntax.
Contoh Attributes
Sebelum PHP 8
|
class
PostsController { /** * @Route("/api/posts/{id}",
methods={"GET"}) */ public function get($id) { /* ... */ } } |
Dengan PHP 8 anda bisa menambahkan
attributes methods
|
class
PostsController { #[Route("/api/posts/{id}",
methods: ["GET"])] public function get($id) { /* ... */ } } |
3. Constructor property promotion
Anda dapat lebih mudah menulis class
dengan adanya bantuan dari constructor
property promotion. Kehadiran constructor property promotion menghapus
keharusan menulis pola yang sama berkali-kali saat Anda menginput nilai / value
pada property class.
Contoh Constructor property promotion
Sebelum PHP 8
|
<?php
class
Mobil { public
string $merek; public
string $warna; public
string $tipe; public
function __construct( string
$merek, string
$warna, string
$tipe ) { $this->merek
= $merek; $this->warna
= $warna; $this->tipe
= $tipe; } } |
Dengan Menggunakan PHP 8
|
<?php class
Mobil { public
function __construct( public
string $merk, public
string $warna, public
string $tipe ) {} } |
4. Union Types
Dengan fitur ini anda bisa
mendeklarasikan lebih dari 1 type didalam classes atau argumets.
Contoh Union Types
Sebelum PHP 8
|
class
Number { /** @var int|float */ private $number;
/** * @param float|int $number */ public function __construct($number) { $this->number = $number; } } new
Number('NaN'); // Ok |
Menggunakan PHP 8
|
class
Number { public function __construct( private int|float $number ) {} } new
Number('NaN'); // TypeError
|
5. Match Expression
Match Expression di PHP 8 hampir sama
dengan switch expression, namun terdapat beberapa improvement di dalamnya
seperti :
- ·
expression dapat mengembalikan value
- ·
tidak membutuhkan break statements
- ·
supports untuk multiple matching values
- ·
disediakan comparisons yang aman
- ·
tidak membutuhkan coercion
Contoh Match Expression
Sebelum PHP 8
|
switch
(8.0) { case '8.0': $result = "Tidak!"; break; case 8.0: $result = "Iya"; break; } echo
$result; //>
Tidak! |
Dengan
menggunakan PHP 8
|
echo match (8.0) { '8.0'
=> "Tidak!", 8.0 =>
"Iya", }; //> Iya |
6. Nullsafe Operator
Dengan fitur ini anda dapat meringkas kode pemrograman untuk mengecekan hasil coding guna menghindari null. Ini menjadikan penulisan untuk error checking menjadi lebih simple.Sebelum PHP 8
|
<?php if ($mahasiswa) { $matakuliah = $mahasiswa->getMatakuliah(); if ($matakuliah) { $kodematkul = $matakuliah->getKodeMatkul (); } } |
|
$kodematkul = $mahasiswa?->getMatakuliah()?->getKodeMatkul
(); |
7.
Saner string to number comparisons
Pada
PHP 8 proses perbandingan sebuah string dengan angka lebih ketat untuk
menghindari “kejutan” yang dihasilkan dari komparasi yang salah. Sebelum PHP 8
tanpa menggunakan strict comparison operator ( === ) kode berikut bernilai
true. Dengan adanya update terbaru ini hasilnya menjadi lebih akurat.
Contoh
:
Dengan
Menggunakan PHP 7
|
// PHP 7 0 == ""; // true |
Dengan
Menggunakan PHP 8
|
// PHP 8 0 == ""; // false |
Anda
bisa melihat pada PHP 8 meskipun tidak menggunakan strict comparison operator
tapi nilai yang dihasilkan adalah sesuai. Berikut adalah contoh comparison
lain.
|
Comparison
| PHP 7 | PHP 8 ------------------------------ 0 ==
"0" | true | true 0 ==
"0.0" | true | true 0 ==
"foo" | true | false 0 ==
"" | true | false 42 == "
42" | true | true 42 == "42foo" | true | false |
8. Just In Time (JIT) Compiler
Ini adalah fitur unggulan
terbaru yang ada di PHP 8 JIT merupakan sebuah teknik yang memungkinkan proses
compiling program menjadi kode mesin dengan segera sebelum dijalankan. Dengan
JIT anda dapat melakukan kompilasi source code yang berlangsung saat runtime coding
dilaksanakan. Tujuan compile ini tak
lain untuk mengetahui komponen mana saja yang bisa dikompilasi berulang kali. Jadi,
saat JIT berjalan, Anda bisa memerhatikan dari semacam monitor / profiler untuk
mngetahui kode-kode yang sedang dieksekusi mesin interpreter. Mesin akan
menemukan komponen yang dieksekusi berulang kali dan akan memberinya
tanda-tanda pengenal seperti ‘warm’ (kode berulang beberapa kali), dan ‘hot’
(kode berulang dalam jumlah banyak). Hasil kompilasi akan dikelompokkan ke
beberapa kolom untuk deindex Proses kompilasi dari JIT masih berlangsung.
Data-data yang sudah diindex akan dicompile sekali lagi untuk menemukan
komponen yang sama. Jika ada komponen yang sama berhasil dideteksi, maka hasil
compile akan dikirim untuk digunakan dalam coding. Hasilnya, struktur coding
software Anda akan terhindar dari error interpreted semacam loop.
9. WeakMap
Fitur WeakRefs sudah
ditambahkan di PHP 7.4 dan dengan PHP 8, Kemudian, WeakMaps telah disertakan
yang merupakan perpanjangan dari fungsi ini. Kegunaan dari WeakMaps dan
WeakRefs untuk menghapus objek jika hanya cache yang mereferensikan kelas
entitas dari objek tersebut. Hal ini mengarah pada penanganan objek yang bisa
menghemat sumber daya.
Penutup
Demikianlah semua fitur
baru serta keunggulan yang hadir di PHP 8. Terima kasih telah membaca artikel
ini Semoga artikel ini bermanfaat bagi
Anda.
Daftar Referensi :
- · https://www.php.net/releases/8.0/en.php
- ·
https://stitcher.io/blog/new-in-php-8
- · https://idcloudhost.com/mengenal-php-8-fitur-keunggulan-serta-tips-dan-triknya/
- · https://coretanit.com/fitur-baru-php-8/
- · https://ilmucoding.com/fitur-ulasan-php-8/
- · https://teknocerdas.com/berita/fitur-fitur-baru-php-8/
- · https://www.logique.co.id/blog/2020/12/03/php-8/
- · https://appkey.id/pembuatan-website/web-programming/php-8-adalah/
