Ilmu Coding Ilmucoding.com - Merupakan situs yang membantu Anda belajar coding lebih mudah, nyaman, interaktif dan profesional. Belajar sekarang di ilmu coding. GRATIS

Kupas Tuntas Fitur Baru PHP 8, Wajib Tahu!

3 min read

Fitur Baru dan Ulasan PHP 8

Kupas Tuntas Fitur dan Ulasan Baru dari PHP 8. Tepat tanggal 26 November 2020 adalah hari lahirnya PHP versi ke 8. Versi ini mengusung banyak perubahan dan perbaikan yang sangat powerfull. Tidak heran dalam beberapa minggu ke depan, PHP 8 ini akan ramai dibincangkan.

Pertama kali membuka dokumentasi release PHP 8, saya mencoba mencari tahu apa saja yang terbaru dari PHP 8. Banyak fitur yang bisa mempermudah dalam membuat aplikasi berbasis web menggunakan PHP. Salah satunya adalah nullsafe operator.

Tapi tenang …

Kita akan kupas tuntas satu per satu apa saja yang terbaru dari PHP 8.

Apa yang Baru dari Fitur PHP 8?

Berikut ini adalah fitur-fitur baru yang telah disiapkan oleh PHP 8, mulai dari:  

  • named arguments
  • union types
  • attributes
  • constructor property promotion
  • match expression
  • nullsafe operator
  • JIT
  • improvisasi type ke dalam sistem
  • error handling
  • consistency
  • dan masih banyak lagi …

Ulasan Fitur Baru PHP 8

Oke, di sini kita akan menjelaskan dan mencontohkan secara detail fitur baru di PHP 8. Step by step disertai dengan contoh kode yang berubah.

Tidak hanya itu, kita juga akan membandingkan dengan PHP versi 7.

Let’s Go!

Baca Juga: Fitur Baru dan Ulasan Laravel 8 yang Perlu Kamu Tahu

Fitur #1 – Named Argument

Fitur ini memungkinkan kita menentukan parameter yang dibutuhkan dan melewati parameter yang bersifat optional. Hal ini akan membuat sebuah function di PHP akan jauh lebih ringkas dari sebelumnya.

Contohnya, di PHP 7 jika menggunakan function htmlspecialchars() kita akan menulis kode sebagai berikut:

htmlspecialchars($string, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);

Bisa dilihat kan?

Betapa tidak mengertinya parameter-parameter tersebut untuk apa tanpa adanya penjelasan.

Di PHP 8 tidak lagi, kita bisa menulis kodenya sebagai berikut:

htmlspecialchars($string, double_encode: false);

// contoh

$name = htmlspecialchars($_POST['name'], double_encode: false);

Asik kan?

Jadi ga perlu lagi repot-repot menulis semua kode parameter yang bersifat optional.

Fitur #2 – Union Type

Kita bisa menggabungkan beberap tipe data dalam suatu variabel. Biasanya, kita hanya menulis nama variabelnya saja tanpa ada tipe datanya.

Contoh:

class Number {
  /** @var int|float */
  private $number;

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

new Number('NaN'); // Ok

Sekarang tidak lagi … Di PHP 8 akan divalidasi sesuai dengan tipe data yang ditentukan.

Contoh:

class Number {
  public function __construct(
    private int|float $number
  ) {}
}

new Number('NaN'); // TypeError

… dengan kode di atas, variabel $number hanya akan bisa diisi dengan parameter int atau float.

Mantap!

Fitur #3 – Attribute

Sekarang kita bisa menggunakan stuktur metadata pada PHP versi ke 8 di native syntax.

Nggak kaya dulu lagi yang begini …

// php 7
class PostsController
{
    /**
     * @Route("/api/posts/{id}", methods={"GET"})
     */
    public function get($id) { /* ... */ }
}

Sekarang kita bisa menambahkan atributenya. Contohnya dari kode di atas, kita tambahkan attribute methods.

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

Makin menarik …

Fitur #4 – Constructor Property Promotion

Apa maksud dari tambahan fitur ini?

Jadi sekarang kita nggak perlu lagi capek-capek nulis kode yang panjang untuk inisialisasi properti di dalam sebuah class.

Di PHP 7, kita menulis kode seperti ini untuk inisialisasi properti sebuah class:

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;
  }
}

Wah… Kepanjangan ini mah.

Coba kita intip versi terbaru dari PHP 8 nya:

class Point {
  public function __construct(
    public float $x = 0.0,
    public float $y = 0.0,
    public float $z = 0.0,
  ) {}
}

Mantul! Mantap betul.

Sekarang penulisan kodenya jadi lebih ringkas. Tentu hal ini akan mempercepat developer dalam menulis kdoe program.

Fitur #5 – Match Expression

Dalam hal pemilihan, biasanya kita menggunakan statement if atau switch case. Saya sendiri sering menggunakannya. Pasti kamu juga. Ya kan?

Contoh:

// 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!

Sekarang kita tidak perlu repot-repot menulis kode sepanjang itu. Bisa kita peringkas dengan cara:

// php 8
echo match (8.0) {
  '8.0' => "Oh no!",
  8.0 => "This is what I expected",
};
//> This is what I expected

Waw keren!

Gak bikin pegel jari-jemari lagi deh …

Oh iya perbandingan match dengan switch yaitu sebagai berikut:

  • Match adalah ekspresi, artinya hasilnya bisa disimpan dalam variabel atau dikembalikan.
  • Cabang perbandingan hanya mendukung single-line expression dan tidak perlu lagi pernyataan break;.
  • Match melakukan strict comparisons.

Fitur #6 – Nullsafe Operator

Ini adalah salah satu fitur yang saya suka. Kita tidak perlu lagi menulis if statement untuk mendeteksi apakah sebuah variabel / function “null” atau tidak.

Contoh, biasanya kita menulis:

//php 7

$country =  null;

if ($session !== null) {
  $user = $session->user;

  if ($user !== null) {
    $address = $user->getAddress();
 
    if ($address !== null) {
      $country = $address->country;
    }
  }
}

Kebayang ya? Betapa banyak pernyataan if yang kita gunakan untuk mendeteksi si variabel atau function null atau tidak.

Di PHP 8 sudah tidak lagi.

Kita bisa memberikan nulsafe operator dengan keyword ?.

Contoh:

// php 8

$country = $session?->user?->getAddress()?->country;

Ini sih keren banget ya. Ringkas, jelas dan padat tanpa bertele-tele lagi.

Fitur #7 – Perbandingan String yang Lebih Baik

Di PHP 7 masih ada perbandingan yang belum sesuai dengan faktanya.

Contoh:

// php 7

0 == 'foobar' // true

Seharusnya hasilnya adalah false, akan tetapi ternyata hasilnya bisa trus kalau di PHP 7.

Nah, sekarang di PHP 8 lebih akurat.

Contoh:

// php 8

0 == 'foobar' // false

Paten!

Fitur #8 – Pembahasan Type Error

Penjelasan dari suatu kesalahan penulisan function di PHP 8 jauh lebih baik untuk saat ini.

… di mana, PHP 7 memberikan keterangan penulisan error yang masih ngambang. Ia hanya memberikan warning saja. Padahal itu jelas-jelas salah!

Contoh:

// 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

Sekarang sudah diperbarui di PHP 8 menjadi seperti ini:

// php 8

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

Nah, sekarang penjelasannya sudah jauh lebih baik.

Fitur #9 – PHP 8 Just-In-Time (JIT) Compilation

PHP 8 mengenalkan 2 JIT engine.

… dengan menggunakan JIT, kinerja program akan meningkat sekitar 3 kali lebih baik pada tolok ukur sintetis dan peningkatan 1,5–2 kali.

Pada umumnya, fitur ini setara dengan PHP 7.4.

Perhatikan grafik di bawah ini:

perbandingan fitur php 8 tanpa jit

Selamat Atas Fitur Baru PHP 8

Saya mengucapkan selamat atas hadirnya PHP 8 yang akan memudahkan developer dalam membangun sebuah website. Masih banyak hal yang belum saya bahas di sini, yaitu perbaikan dan penambahan:

  • Improvisasi Sistem dan Error Handling
  • Improvisasi Syntax Tweaks
  • Penambahan Class Baru
  • Interface Baru
  • Function Baru

Kata Pembuka

Demikianlah pembahasan fitur baru dan ulasan PHP 8 pada kesempatan kali ini. Ke depannya kita tidak akan berhenti di sini saja.

Segera update versi PHP mu ke 8 ya.

Tutorial Upgradenya menyusul. Insya Allah.

Oh iya, sebenarnya masih banyak pembahasan yang mau saya bahas. Mungkin di artikel selanjutnya ya.

Semoga artikel ini bermanfaat ya. Aamiin.

Ilmu Coding Ilmucoding.com - Merupakan situs yang membantu Anda belajar coding lebih mudah, nyaman, interaktif dan profesional. Belajar sekarang di ilmu coding. GRATIS

One Reply to “Kupas Tuntas Fitur Baru PHP 8, Wajib Tahu!”

Leave a Reply

Your email address will not be published. Required fields are marked *

Jika terbantu dengan artikel ini, silahkan share, beri komentar dan "klik" 1 kali pada iklan ya.