Permrograman PHP • 8 bulan yang lalu

Fitur Baru Pada PHP 8 Yang Bisa Sangat Bermanfaat

avatar of Azhari Sikumbang

Azhari Sikumbang

@azhari

Share on

Tidak terasa PHP sudah akan merilis versi ke 8 pada penghujung November 2020 mendatang. Seperti kabar yang beredar, bahasa pemrograman PHP akan dilengkapi oleh beberapa fitur baru yang mampu menambah performance kita dalam develop aplikasi PHP sehari hari. Nah, apa saja fitur ini? Berikut 5 fitur baru PHP 8 yang bisa sangat bermafaat bagi kita.

Constructor Property Promotion

Pada saat kita menulis construtor pada OOP, dalam pemberian nilai pada properti class melalui constructor, sering kali kita melakukan pola yang sama. Nah, salah satu fitur baru PHP 8 adalah mempermudah dan mempercepat kita dalam menulis class kita.

RFC : https://wiki.php.net/rfc/constructor_promotion

Sebelum PHP 8 :

<?php

class Person 
{
	public string $name;
	public string $age;
	public string $gender;

	public function __construct(
		string $name, 
		string $age,
		string $gender
	)
	{
		$this->name = $name;
		$this->age = $age;
		$this->gender = $gender;
	}
}

Pada PHP 8 :

<?php

class Person 
{
	public function __construct(
		public string $name, 
		public string $age,
		public string $gender
	) {}
}

Null Safe Operator

Pada fitur ini, kita sangat terbantu dengan memperpendek pemeriksaan hasil dari kasus kita. Karena bisa saja baris kode kita jalankan tidak sesuai ekspektasi dan menghasilkan nilai null. Dan biasanya kita akan melakukan validasi null (is_null) untuk sekedar mengetahui result dari kode kita atau terbebas dari pesan error

RFC : https://wiki.php.net/rfc/nullsafe_operator

Sebelum PHP 8 :

<?php
if ($person) {
	$address = $person->getAddress();

	if ($address) {
		$streetName = $address->getStreetName();
	}

}

Pada PHP 8

$streetName = $person?->getAddress()?->getStreetName();

Named Arguments

Fitur ini sebenarnya bukan fitur baru di dunia pemrograman, jika anda terbiasa dengan python atau ruby mungkin hanya bersikap biasa saja. Tapi bagi pengguna PHP fitur ini bisa menyelesaikan beberapa isu yang muncul pada saat development.

RFC : https://wiki.php.net/rfc/named_params

Contoh createPerson() :

function createPerson(string $name, int $age, ?string $address = null, ?string $gender = null) {}

// Cara menggunakan

// Sebelum PHP 8
createPerson('John Doe', 22, null, 'male');

// PHP 8 Named Arguments
createPerson(name: 'John Doe', age: 22, gender: 'male');

Selain itu, fitur baru PHP 8 ini juga bisa digunakan untuk function yang sudah ada bersama php, seperti

function array_keys(array $arg, $search_value = UNKNOWN, bool $strict = false): array {}

 // PHP 8
array_keys(arg: $yourArray, search_value: 90, strict: true);

str_contains

PHP 8 juga diikuti beberapa function baru, fungsi ini nanti akan difungsikan untuk mengecek sebuah string apakah mengandung string yang dimaksud dan akan mengembalikan nilai boolean. Biasanya, untuk melakukan pengecekan apakah sebuah string terdapat pada string lainnya kita menggunakan strpos, walau secara spesifik berbeda pada nilai kembalian (integer) atau yang paling ekstrim memakai regexp 🙂

RFC : https://wiki.php.net/rfc/str_contains

// Sintaks
str_contains( string $haystack , string $needle ) : bool

// Penggunaan
str_containts("Welcome PHP 8 !", "PHP"); // true

PHP JIT (Just in Time Compiler)

Dan yang paling banyak dibicarakan adalah JIT atau Just in Time Compiler. JIT sendiri telah dipergunakan oleh modern browser dan mulai dipublikasikan sebagai kandidat fitur rilis dari PHP oleh om Dmitry Stogov di PHP RFC pada awal tahun 2019 silam.

RFC : https://wiki.php.net/rfc/jit

Tapi, apa itu JIT ?

Sebelum kesana, seperti ktia ketahui PHP adalah bahasa interpreted, bukan bahasa compiled seperti C, C++, Java, Go dan sebagainya. Sebagai mana interpreted language, terdapat kekurangan pada saat menjalankan kode yang sama jika dibandingkan ke compiled language. Nah dari kekurangan ini diciptakan lah teknik yang dinamakan JIT.

JIT sendiri merupakan sebuah teknik untuk mengkompilasi bagian bagian source code kita pada saat runtime untuk selanjutnya digunakan kembali. Untuk mengetahui bagian mana saja yang seharusnya dikompilasi, dikenal istilah monitor (atau Profiler pada modern browser) yang berfungsi untuk memperhatikan kode saat dieksekusi oleh interpreter. Jika ada bagian kode yang dieksekusi berulang, maka monitor akan menandai bagian tersebut sebagai warn atau jika dalam jumlah yang banyak ditandai sebagai hot.

Bagian bertanda akan dikompilasi dan hasil kompilasi ini disebut sebagai stub (atau sebut saja versi cache dari source code asli kita). Dan stub ini akan dikelompokkan kedalam kolom kolom dan diberi index berdasakan line number dan data type nya.

Nah, berdasarkan hasil kompilasi atau stub, apabila monitor berhasil menemukan kembali bagian yang sama dengan baris dan tipe data yang sama, maka hasil kompilasinya lah yang akan dikirim sehingga prosesnya bisa lebih cepat dan kita tidak perlu lagi mengkhawatirkan kekurangan interpreted language saat menghadapi kode berulang seperti looping atau kasus lainnya.

Nah, bagaimana tentang fitur baru PHP 8 ? Tapi tunggu dulu, selain 5 fitur baru tersebut, PHP juga mempunyai banyak perubahan dan layak ditunggu.

Referensi :