Top Fitur Baru PHP 8.5 Wajib Kamu Ketahui Dengan Contoh Kode

logo icon

Admin Teguh

-

04 September 2025

Top Fitur Baru PHP 8.5 Wajib Kamu Ketahui Dengan Contoh Kode

PHP 8.5 yang mungkin akan dijadwalkan rilis stabil pada 20 November 2025, membawa peningkatan signifikan untuk developer PHP dengan fokus pada readable code, efisiensi, dan kemudahan debugging. Dalam artikel ini, kita akan memahami beberapa fitur utama PHP 8.5 secara rinci, termasuk function atau method array baru seperti array_first dan array_last, pipe operator (|>), dukungan closure dan first-class callables di constant expressions, serta fungsi baru get_error_handler dan get_exception_handler.

Top Features in PHP v8.5

PHP 8.5 membawa sejumlah fitur baru yang siap meningkatkan cara kita khususnya PHP Developer menulis kode. Berikut adalah hal-hal penting yang sebaiknya diketahui setiap PHP Developer.

Function Array Baru

Fitur array_first dan array_last di PHP 8.5 memungkinkan developer untuk mengambil elemen pertama atau terakhir dari array dengan cara yang lebih sederhana dan aman, tanpa mengubah pointer internal array. Ini mengatasi keterbatasan metode lama seperti reset() atau end(), yang bisa menyebabkan masalah pada iterator array.

Implementasi Function array_first() dan array_last()

Kedua fungsi ini bekerja pada array asosiatif maupun numerik, dan otomatis dereference jika elemen adalah referensi.

// Examples with array numeric
$fruits = ['apple', 'banana', 'orange'];
echo array_first($fruits); // 'apple'
echo array_last($bfruits);  // 'orange'

// Examples with array associative
$data = ['name' => 'John Dev', 'age' => 25, 'City' => 'New York'];
echo array_first($data); // 'John Dev'
echo array_last($data);  // 'New York'

// Empty Array
$emptyArray = [];
echo array_first($emptyArray) ?? 'Array is Empty';
echo array_last($emptyArray) ?? 'Array is Empty';

// Array with random key orders
$randomArray = [1 => 'a', 0 => 'b', 3 => 'c', 2 => 'd'];
echo array_first($randomArray); // 'a'
echo array_last($randomArray);  // 'd'

Rangkuman Penjelasan Function array_first() dan array_last()

  • array_first(array $array): mixed: Mengembalikan nilai pertama dari array berdasarkan urutan kunci (bukan indeks numerik). Jika array kosong, mengembalikan null.
  • array_last(array $array): mixed: Mengembalikan nilai terakhir dari array. Sama seperti array_first(), mengembalikan null untuk array kosong.
  • Fitur ini konsisten dengan fungsi seperti array_key_first() dan array_key_last() yang diperkenalkan di PHP 7.3, tetapi langsung mengembalikan nilai, bukan kunci.
  • Mengurangi kode boilerplate dan menghindari modifikasi iterator, yang bisa menyebabkan bug di kode kompleks. Dan mengembalikan null pada array kosong yang memudahkan penanganan dengan operator null coalescing (??).

Pipe Operator

Pipe operator (|>) adalah salah satu fitur paling dinanti di PHP 8.5, memungkinkan chaining fungsi secara linear untuk meningkatkan readable code. Operator ini meneruskan nilai dari kiri ke fungsi di kanan sebagai parameter pertama, mirip dengan pemrograman fungsional di bahasa seperti Elixir.

Implementasi Pipe Operator

// without Pipe Operator
$result = trim(str_shuffle(strtoupper('Hello World')));

// with Pipe Operator
$result = 'Hello World'
    |> strtoupper(...)
    |> str_shuffle(...)
    |> trim(...);

// mixing callable example
$result = 'Hello World'
    |> 'strtoupper'  // String callable
    |> fn($x) => trim($x)  // Arrow function
    |> new MyTrimmer()  // __invoke class
    |> [Trimmer::class, 'trimStatic'];  // Static method

// Class
class MyTrimmer {
    public function __invoke($str) { return trim($str); }
}

class Trimmer {
    public static function trimStatic($str) { return trim($str, ' '); }
}

Rangkuman Penjelasan Pipe Operator

  • Syntax: nilai |> fungsi(...), di mana ... menunjukkan first-class callable. Operator evaluasi dari kiri ke kanan, dan bisa dichaining berkali-kali.
  • Setiap fungsi harus memiliki minimal satu parameter (atau bisa juga tanpa parameter, tapi akan diabaikan). Parameter by-reference tidak diperbolehkan, kecuali pada fungsi bawaan tertentu.
  • Type coercion mengikuti aturan PHP, jika strict_types=1, bisa memicu TypeError.
  • Kode dioptimalkan saat kompilasi menjadi opcode serupa struktur nesting, dengan efisiensi memori copy-on-write.

Support Closure dan First-Class Callables di Constant Expressions

PHP 8.5 memperkenalkan dukungan untuk closure statis dan first-class callables sebagai nilai default di konstanta, properti class, dan argument pada function. Ini memungkinkan kode lebih ekspresif tanpa perlu type hint nullable untuk callback opsional.

Implementasi Support Closure dan First-Callables di Constant Expressions

// constant class
class Config {
    const DEFAULT_FILTER = static fn($value) => trim(strip_tags($value));
}

// property class
class Processor {
    private array $callbacks = [
        static fn($val) => strtoupper($val),
        Processor::sanitize(...)
    ];

    private static function sanitize($val) { return htmlspecialchars($val); }
}

function process(string $input, callable $filter = static fn($x) => $x) {
    return $filter($input);
}

echo process('Hello'); // 'Hello'
echo Config::DEFAULT_FILTER('<b>World</b>'); // 'World'

Rangkuman Penjelasan Support Closure dan First-Callables di Constant Expressions

  • Supported Contexts: Bisa digunakan di konstanta global atau class, properti kelas (static/non-static), dan default argumen function.
  • Hanya closure static dengan static fn dan metode static yang didukung, karena konstanta harus dievaluasi saat kompilasi.
  • Tidak mendukung closure non-static, karena bergantung pada $this atau variabel instance.
  • Mengurangi kebutuhan untuk null sebagai default callback, membuat kode lebih aman dan rapih.

get_error_handler() dan get_exception_handler()

Dua fungsi baru ini pada PHP 8.5 memungkinkan akses langsung ke handler error dan exception yang aktif, memudahkan debugging, dan manajemen error dinamis.

Implementasi get_error_handler() dan get_exception_handler()

// set handler
set_error_handler(function($errno, $errstr) { echo "Error: $errstr"; });
set_exception_handler(function($e) { echo "Exception: " . $e->getMessage(); });

// get handler
var_dump(get_error_handler());
var_dump(get_exception_handler());

// examples
if (get_error_handler() === null) {
    echo "no error handler.";
}

Rangkuman Penjelasan get_error_handler() dan get_exception_handler()

  • get_error_handler(): ?callable: Mengembalikan handler error saat ini dari set_error_handler() function, atau null jika tidak ada.
  • get_exception_handler(): ?callable: Mengembalikan handler exception saat ini dari set_exception_handler() function, atau null jika tidak ada.
  • Memungkinkan inspeksi handler tanpa modifikasi, berguna untuk library atau framework yang perlu memeriksa konfigurasi error.

Kesimpulan

Fitur-fitur baru pada PHP 8.5 membawa efisiensi baru untuk PHP Developer. Dengan implementasi beberapa contoh kode PHP 8.5 yang rinci di atas, kalian sudah bisa mulai mencoba versi beta ini untuk proyek terbaru kalian.

Terimakasih.

Teguh Budi Laksono

Teguh Budi Laksono

"bukan orang sempurna, hanya seseorang yang terus belajar dan berusaha, karena ia percaya bahwa mimpi besar lahir dari proses panjang dan konsisten."

Tags :

php

php 8.5

top php 8.5 features you need to know

php developer

a new version php 8.5 will be released soon

web

web developer

learn coding with nganggurdev

Suka dengan artikel di NganggurDev? Yuk, beri dukungan untuk penulis. Terima kasih banyak!

Want to read more? Click me!