Beberapa waktu lalu PHP merilis versi terbaru yaitu PHP 8.Tentu saja versi terbaru ini menghadirkan banyak perubahan dan perbaikan yang sangat berguna. Pada kesempatan kali ini kita akan membahas beberapa fitur baru yang dibawa oleh PHP 8.
Berikut ini adalah fitur-fitur baru pada PHP 8 yang tentunya akan memudahkan pekerjaan Kita:
1. Named Argument
Pada PHP 7 saat kita membuat fungsi yang memiliki banyak argument, kita harus mengisi semua argument yang ada dan sesuia urutan agar data yang dimasukkan tidak tertukar walaupun kadang ada argument yang sebenarnya tidak selalu memiliki nilai / value.
Berikut ini contohnya:
// PHP 7
setcookie("mycookie", "myvalue", 0, null, null, false, true);
Namun hal ini tidak berlaku untuk named arguments PHP 8. Argumen yang dikirimkan memiliki nama sehingga urutan argumen jadi tidak berpengaruh. Artinya, Kita hanya perlu menulis nilai yang ingin Kita ubah.
Berikut ini contohnya:
// PHP 8
setcookie(httponly: true, value: "myvalue", name: "mycookie");
Dengan adanya Name Arguments pada PHP 8 ini, proses coding menjadi lebih mudah. Sebab identifier ketika argumen dikirim ke fungsi akan memperjelas pembacaan kode.
2. Match Expression
PHP 8 memperkenalkan fitur Match Expression. Fitur ini mirip dengan Switch Case pada PHP 7. Bedanya, Match Expression memiliki sintaks yang lebih ringkas.
perbedaan antara Match dan Switch Case adalah 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
Berikut ini contoh penggunaanya:
// PHP 7
switch (8.0) {
case '8.0':
$result = "Oh no!";
break;
case 8.0:
$result = "This is what I expected";
break;
}
echo $result;
//> Oh no!
// PHP 8
echo match (8.0) {
'8.0' => "Oh no!",
8.0 => "This is what I expected",
};
//> This is what I expected
3. Constructor Property Promotion
Fitur baru PHP 8 berikutnya adalah Constructor Property Promotion. Fitur ini berfungsi mengurangi penulisan atribut berulang pada class constructor.
Berikut ini contoh penggunaanya:
// PHP 7
class Point {
public float $x;
public float $y;
public float $z;
public function __construct(
float $x = 0.0,
float $y = 0.0,
float $z = 0.0
) {
$this->x = $x;
$this->y = $y;
$this->z = $z;
}
}
// PHP 8
class Point {
public function __construct(
public float $x = 0.0,
public float $y = 0.0,
public float $z = 0.0,
) {}
}
4. Nullsafe operator
Pada PHP 7, untuk melakukan pengecekan nilai null pada variabel kita harus menggunakan statement if yang kadang berulang ulang.
Berikut ini contoh penggunaanya:
// PHP 7
$country = null;
if ($session !== null) {
$user = $session->user;
if ($user !== null) {
$address = $user->getAddress();
if ($address !== null) {
$country = $address->country;
}
}
}
Nah, dengan PHP 8 Anda bisa menggunakan fitur NullSafe Operator.Dengan menggunakan fitur ini, Anda bisa mendeteksi null dalam suatu elemen rantai. Jika ditemukan null dalam rantai itu, maka proses eksekusi akan langsung dibatalkan dan langsung menetapkan null.
// PHP 8
$country = $session?->user?->getAddress()?->country;
5. Union types
Fitur Union Types dapat menggabungkan satu atau lebih tipe data dengan menggunakan operator | pipe. Sebagai contoh sebuah fungsi dapat menerima inputan berupa angka dalam bentuk integer dan float.
Berikut ini contoh penggunaanya:
// PHP 7
class Number {
/** @var int|float */
private $number;
/**
* @param float|int $number
*/
public function __construct($number) {
$this->number = $number;
}
}
new Number('NaN'); // Ok
Sedangkan, pada PHP 8 format sintaksnya lebih sederhana:
// PHP 8
class Number {
public function __construct(
private int|float $number
) {}
}
new Number('NaN'); // TypeError
6. JIT (Just In Time) Compiler
JIT Compiler merupakan fitur unggulan terbaru yang ada di dalam PHP 8. Fitur ini bisa meningkatkan performa yang signifikan pada kode PHP. Fitur baru JIT ini bisa meningkatkan kinerja program sekitar 3 kali lebih baik.
JIT Compiler berfungsi sebagai mekanisme untuk memonitor terhadap source code PHP. Dengan proses tersebut, interpreter PHP bisa menandai setiap baris kode yang akan dieksekusi secara berulang lalu melakukan kompilasi pada kode tersebut.
Sulfikardi
Web Design & Web Programming
Halo, saya seorang Web Developer yang terbiasa mengembangkan website
menggunakan HTML, CSS, Javascript, PHP, MYSQL, dan Laravel. Disini saya akan membagikan pengalaman saya dalam membangun dan mengembangan website yang responsif dan dinamis