Skip to content Skip to sidebar Skip to footer

Widget Atas Posting

Beberapa Fitur Baru Yang ada Pada PHP 8

Perlu kita ketahui PHP 8 telah di luncurkan pada tahun 2020 kemarin. Ada beberapa fitur baru yang belum ada pada versi sebelumnya. Fitur apa saja yang baru dari PHP 8 ?. Ada beberapa fitur baru yang belum ada pada versi sebelumnya. Fitur apa saja yang baru dari PHP 8 ?

Mari kita  bahas satu persatu beberapa fitur baru yang ada pada PHP 8

    1. Named Argument

Named argument mempunyai fungsi untuk menentukan parameter dan akan melewati parameter yang bersifat pilihan/optional. Dengan fitur tersebut tentunya akan membuat sebuah perubahan saat kita membuat function dalam PHP akan lebih mudah dan singkat.

Perhatikan contoh berikut ini kita gunakan fungsi htmlchar() dengan kode seperti berikut ini :

htmlchar($string, ENT_COMPAT | ENT_HTML401. ‘UTF-8’, false);

Pada kode diatas jika dijalankan pada versi PHP 7 kebawah masih bisa berfungsi namun jika dijalankan pada PHP 8 sudah tidak berfungsi lagi, jika kita menulisnya pada PHP 8 maka kode programya akan seperti berikut ini :

htmlchar($string, double_encode: false);
2.    Union Type

Union type mempunyai fungsi untuk menggabungkan beberapa tipe data di dalam sebuah variabel.

Contohnya pada PHP 7 :

<?php
class Angka
{
	//@var int|float
	private $angka;

	//@param float|int @angka
	public function __construct($angka) {
		$this->angka = $angka;
	}
}

new Angka('NaN'); //OK

?>
Jika di PHP 8 maka akan menvalidasi sesuai dengan tipe data yang telah ditentukan contohnya
<?php
class Angka
{
	public function __construct(private int|float $angka) {
		$this->angka = $angka;
	}
}

new Angka('NaN');

?>

Pada kdoe diatas dijalankan pada PHP 8 maka variabel $angka hanya dapat diisi dengan parameter float atau int.

    3. Attribute

Dengan PHP 8 kita dapat menggunakan struktur metadata di native syntax.

Contoh kode program pada PHP 7
class PostsController
{
	//@Route("/api/posts/{id}", methods={"GET"})
	public function get($id) { /** isi fungsi **/ }
}
Pada contoh kode diatas kita dapat menambahkan attribute methods pada PHP 8 sehingga akan seperti dibawah ini :

class PostsController
{
	#[Route("/api/posts/{id}", methods: ["GET"])]
	public function get($id) { /* isi fungsi */ }
}
4.    Constructor Property Promotion

Dengan menggunakan fitur di atas kita dapat menulis kode lebih singkat dalam meng-inisialisasi property dalam suatu class.
class Number {
	public int $a;
	public int $b;
	public int $c;

	public function __construct(
		int $a = 0,
		int $b = 0,
		int $c = 0,
	) {
	$this->a = $a;
	$this->b = $b;
	$this->c = $c;
  }
}
Jika dalam php 8 maka dapat lebih ringkas seperti berikut ini :
class Number {
	public function __construct(
		public int $a = 0,
		public int $b = 0,
		public int $c = 0,
	) {}
}
5.    Match Expression

Saat membuat pemilihan kita sering menggunakan statement switch case atau if seperti berikut ini :

switch (8) {
	case '8':
		$result = "Ini String";
		break;
	case 8:
		$result = "ini Angka 8";
		break;
}
echo $result;echo $result;
Dengan menggunakan PHP 8 kita dapat meringkas kode diatas menjadi seperti berikut ini :
echo match (8) {
	'8' => "Ini String",
	8 => "Ini Angka 8",
};
Perlu kita ketahui match dengan switch mempunyai perbandingan sebagai berikut :

-          Match merupakan ekspresi yang mempunyai arti hasilnya dapat disimpan di dalam variabel atau dapat dikembalikan

-          Dalam cabang perbandingan match hanya mendukung single-line dan tidak perlu menggunakan pernyataan break.

-          Match dapat melakukan strict comparisons

 

    6. Nullsafe Operator

Dengan menggunakan nullsafe operator kita tidak perlu lagi menggunakan if statement dalam mendeteksi sebuah variabel atau function mempunyai nilai “null” atau tidak.

Contoh yang biasa kita tulis pada PHP 7
$negara = null;
if ($session !== null) {
	$user = $session->user;
	if ($user !== null) {
		$alamat = $user->getAlamat();
	if ($alamat !== null) {
		$negara = $alamat->negara;
	}
  }
}
Pada PHP 7 seperti contoh diatas kita terlalu banyak menggunakan statement if untuk mendeteksi isi variabel / function nilainya null atau tidak.

Dengan menggunakan PHP 8 maka kodenya dapat lebih singkat lagi seperti berikut:
$negara = $session?->user?->getAlamat()?->negara;

 7.    Perbandingan String Yang lebih baik.

Pada PHP 7 dalam perbandingan nyatanya masih ada yang belum sesuai dengan fakta-nya. Perhatikan contoh kode berikut ini:

0 == “foobar”
AKode diatas harusnya hasilnya adalah false namun pada PHP 7 hasilnya dapat bernilai true.

Pada PHP 8 sekarang hasilnya lebih akurat  dan bernilai false

8.    Type Error

Pada PHP 7 pada saat kita menuliskan kode function yang salah maka akan muncul keterangan error yang menurutku masih ngambang yang hanya memberikan peringatan saja. Beda dengan PHP 8 yang menjadi lebih baik untuk sekarang ini.

Contoh error pada PHP 7.
strlen([]); // Warning: strlen() expects parameter 1 to be string, array given
 
array_chunk([], -1); // Warning: array_chunk(): Size parameter expected to be greater than 0
Jika pada PHP 8 penjelasannya menjadi lebih baik lagi seperti beirkut ini :
strlen([]); // TypeError: strlen(): Argument #1 ($str) must be of type string, array given
 
array_chunk([], -1); // ValueError: array_chunk(): Argument #2 ($length) must be greater than 0
Itulah beberapa fitur baru yang telah hadir pada PHP 8 yang dapat memudahkan developer web dalam mengembangkan aplikasinya. Sebenarnya masih ada beberapa pembaruan dari PHP 8 yang belum kita bahas namun kita cukupkan sampai disini dulu artikel kali ini. Kita sambung lagi pembahasan tentang perbaikan dan penambahan fitur pada PHP 8 pada artikel selanjutnya.

Post a Comment for "Beberapa Fitur Baru Yang ada Pada PHP 8"