Apa Saja Fitur-Fitur Baru Di PHP 8.1

Dalam situs resminya, PHP akhirnya merilis update baru yaitu PHP 8.1 pada tanggal 25 November lal...
Penulis
Admin
Kategori
Website
Estimasi
3 menit baca
Dilihat
958
Posting
04 Jul 2022
Apa Saja Fitur-Fitur Baru Di PHP 8.1 Dalam situs resminya, PHP akhirnya merilis update baru yaitu PHP 8.1 pada tanggal 25 November lalu. PHP 8.1 menambahkan beberapa fitur baru, perbaikan minor bug dan peningkatan kinerja PHP. Beberapa daftar dari fitur tersebut adalah Enumerations, Readonly Properties, Fibers, Pure Intersection Types, First Class Callable, Final Class Constants, Never Return Type, penambahan function baru array_is_list, fsync dan fdatasync Apa Saja Fitur-Fitur Baru Di PHP 8.1
2022-11-25

Dalam situs resminya, PHP akhirnya merilis update baru dengan versi 8.1 pada tanggal 25 November yang lalu yang sebelumnya sudah melakukan update terbaru dengan PHP 8. Dalam update terbarunya kali ini, PHP menambahkan beberapa tambahan fitur baru, perbaikan minor bug dan peningkatan kinerja.

Beberapa daftar dari fitur tersebut adalah Enumerations, Readonly Properties, Fibers, Pure Intersection Types, First Class Callable, Final Class Constants, Never Return Type, penambahan function baru array_is_list, fsync dan fdatasync. Pada artijel kali ini, kita akan bedah satu persatu apa saja fitur tersebut? yuk kita simak:

 

Mengenal Fitur-Fitur Baru Di PHP 8.1

 

 

1. Enumerations

Enumerations memungkinkan developer untuk menentukan sendiri jenis tipe data atau nilai. Ini sangat membantu ketika developer akan mendefinisikan model dan memvalidasi proses terhadap nilai tersebut menjadi lebih singkat, contoh syntax:

enum UserStatus: string
{
    case ditunda = "P";
    case aktif = "A";
    case cancel = "C";

    public function label(): string
    {
        return match ($this) {
            static::ditunda => "Ditunda",
            static::aktif => "Aktif",
            static::cancel => "Cancel"
        };
    }
}

 

2. Readonly Properties

Fitur baru ini memungkinkan developer untuk menandai proses sebagai readonly pada property class, yang dimana property tersebut hanya bisa ditulis satu kali dan tidak dapat melakukan perubahan lanjutan.

Readonly properties memungkinkan developer untuk secara langsung mengekspos readonly public properties tanpa takut untuk merusak varian class lainnya dan menghindari menulis kode yang sama secara berulang (boilerplate). Contoh syntax:

class Coba {
   public readonly string $properti;

   public function __construct(string $properti) {
     $this->properti = $properti;
   }
}

$test = new Coba("test");
var_dump($test->properti);

 

3. Fibers

Fibers merupakan mekanisme untuk memfasilitasi perintah secara bersamaan, dapat menjeda, memulai, menghentikan dan melanjutkan beberapa perintah/execution tanpa mempengaruhi fungsi lain. Contoh syntax:

$fiber = new Fiber(function() : void {
   Fiber::suspend();
   echo "Fiber sudah berjalan!";
});
$fiber->start();
$fiber->resume();

 

4. Pure Intersection Types

Sistem PHP kini memahami intersection. Pure Intersection Types berguna ketika memanggil kode dengan metode instance yang ditentukan oleh dua interface. Dimana sebelumnya, developer perlu membuat interface baru untuk memperluas kedua interface yang diinginkan dan ini tidak praktis. Fitur ini digunakan juga untuk mendeklarasikan beberapa constraints disaat yang sama. Contoh syntax:

# PHP 8.0
interface CountableString extends Countable, Stringable {}

public function hitungNilai(CountableString $nilai) : void {
  echo "$nilai: " . count($nilai);
}

#PHP 8.1
public function hitungNilai(Countable&Stringable $nilai) : void {
  echo "$nilai: " . count($nilai);
}

 

5. First Class Callable

Callable sekarang merupakan class utama dalam bahasa PHP. Artinya, developer dapat langsung menetapkan fungsi kedalam variabel daripada menggunakan Closure::fromCallable. First Class Callable digunakan untuk menimpa sebuah nilai kedalam function dengan cara membuat function menjadi callable. Contoh syntax:

# PHP 8.0
$built = Closure::fromCallable("array_map");
$method = [$this, "ambilData"];

# PHP 8.1
$built = array_map(...);
$method = $this->ambilData(...);

 

6. Final Class Constants

Penanda nilai (Final) dalam constant saat ini sudah support dalam PHP 8.1. Hal ini developers dapat menandai constants untuk menghindari nilai pada turunan class yang tidak dikehendaki. Dalam versi sebelumnya, child pada class bebas untuk menimpa nilai constant yang diwarisi oleh parent class. Contoh syntax:

# PHP 8.0
class MainClass {
  public const MainConstant = 1;
}
class ChildClass extends MainClass {
  public const MainConstant = 2;
}

# PHP 8.1
class MainClass {
  final public const MainConstant = 1;
}
class ChildClass extends MainClass{
  public const MainConstant = 2;
}

 

7. Never Return Type

Fitur baru ini bertujuan untuk menghentikan ekskusi pada program dengan menggunakan trigger seperti fungsi exit() atau die() untuk menampilkan pesan error. Fungsi never dapat mengamankan suatu function agar tidak pernah kembali dan dapat menghentikan looping yang tidak berujung. Contoh syntax:

function redirectURL(string $uri): never {
  if (false) {
    header('Location: ' . $uri);
    exit();
  }
}

 

8. Function baru array_is_list

Array dalam PHP dapat menampung banyak key dalam integer atau string. Para developer akan efisien untuk memeriksa apakah entry tertentu adalah array. Namun tidak mudah untuk mengecek apakah entry tersebut memiliki array yang tidak memiliki offset, key yang tidak berurutan dan lainnya. Dengan kata lain, developer tidak dapat menentukan apakah array tersebut adalah list.

Fungsi baru array_is_list ini dapat memeriksa key pada array yang berada dalam urutan dan berurutan dimulai dari 0. Function ini akan mengembalikan true, jika semua terpenuhi dan mendeteksi sebuah array kosong. Contoh syntax:

// contoh mengembalikan true dalam array_is_list
array_is_list([]); // true
array_is_list([1, 2, 3]); // true

// contoh mengembalikan false dalam array_is_list
array_is_list([1 => 'kucing', 'gogog']); // false (key offset pertama bukan 0)
array_is_list([1 => 'kucing', 0 => 'gogog']); // false (key tidak berurutan)

 

Function ini dengan strict menentukan urutan pada key sebelum melanjutkan proses eksekusi kode.

 

9. Function baru fsync dan fdatasync

Akhirnya dalam update PHP 8.1, PHP sudah mengimplementasikan function ini kedalam bahasa mereka, karena PHP merupakan salah satu dari bahasa lainnya yang belum menerapkan function ini. 

Function fsync() sebenarnya hampir sama dengan function fflush(), namun ada sedikit perbedaan secara signifikan. Function fflush() membuang buffer pada internal aplikasi ke OS dan function fsync() memastikan buffer internal dibuang ke storage fisik. Contoh syntax:

$docs = 'dokumen.txt';

$doc = fopen($docs, 'dok');
fwrite($doc, 'Info dokumen');
fwrite($doc, "\r\n");
fwrite($doc, 'Info lainnya');

fsync($doc);
fclose($doc);

 

Sementara itu, Function fdatasync() digunakan untuk menyinkronkan data dengan cara cepat, tanpa harus memastikan dengan meta data yang dirasa tidak cukup penting.

 

Fitur baru PHP 8.1

 

Kesimpulan

Beberapa fitur baru yang hadir dalam PHP 8.1 ini cukup menarik untuk kita pelajari dan diterapkan kedalam aplikasi kita. Tentunya untuk memudahkan para developer dalam membuat website menjadi stabil dan cepat. Apakah kalian ingin langsung migrasi ke versi 8.1 ini?

Share