Kodealgo

Arrow Function PHP

Arrow function atau fungsi panah merupakan alternatif anonymous function yang diimplementasikan menggunakan kelas Closure.

Fungsi panah memiliki perilaku yang identik dengan fungsi tanpa nama, bedanya fungsi ini dapat menggunakan variabel di lingkup induk secara otomatis tanpa harus menggunakan kata kunci use.

Ketika variabel yang digunakan dalam ekspresi fungsi panah didefinisikan di lingkup induk, nilai dari variabel tersebut akan ditangkap secara implisit.

Berikut beberapa topik yang akan kita bahas terkait arrow function.

  1. Sintaks
  2. Arrow Function sebagai Parameter Callable
  3. Menugaskan Arrow Function ke Variabel
  4. Mengakses Variabel di Lingkup Induk

Sintaks

fn (argumen) => ekspresi;

Penjelasan

  • fn - kata kunci untuk membuat fungsi panah.
  • argumen - nilai yang diteruskan ke fungsi panah.
  • ekspresi - ekspresi fungsi panah hanya dapat dibuat dalam satu baris.

Sintaks diatas adalah fungsi panah tanpa nama, sama halnya seperti fungsi tanpa nama, kita dapat menggunakannya sebagai parameter callable atau mengikatnya ke sebuah variabel agar dapat dipanggil berulang kali.

Arrow Function sebagai Parameter Callable

Contoh berikut kita menggunakan fungsi panah pada parameter pertama fungsi array_map untuk mengubah setial elemen array $names agar menggunakan huruf besar semua.

$names = ['Budi', 'Bambang', 'Dodi'];

$namesUpper = array_map(fn ($name) => strtoupper($name), $names);

var_dump($namesUpper);

// array(3) {
//   [0]=>
//   string(4) "BUDI"
//   [1]=>
//   string(7) "BAMBANG"
//   [2]=>
//   string(4) "DODI"
// }

Kita juga bisa menugaskan fungsi panah ke variabel agar dapat digunakan secara berulang dibagian lain dalam kode kita, seperti halnya fungsi tanpa nama.

Mari kita ubah contoh kode sebelumnya agar menghasilkan hasil yang sama, tapi menggunakan fungsi panah yang ditugaskan ke variabel $toUpper.

$names = ['Budi', 'Bambang', 'Dodi'];

$toUpper = fn ($name) => strtoupper($name);

$namesUpper = array_map($toUpper, $names);

var_dump($namesUpper);

// array(3) {
//   [0]=>
//   string(4) "BUDI"
//   [1]=>
//   string(7) "BAMBANG"
//   [2]=>
//   string(4) "DODI"
// }

Mengakses Variabel di Lingkup Induk

Seperti yang sudah dijelaskan sebelumnya, fungsi panah dapat menangkap variabel yang berada di lingkup induknya seperti halnya fungsi tanpa nama, tapi kita tidak perlu menggunakan kata kunci use seperti halnya fungsi tanpa nama.

Berikut adalah contoh yang menunjukkan bagaimana kita mengakses variabel di lingkup induk yaitu $y agar dapat digunakan di dalam fungsi panah dan fungsi tanpa nama.

$y = 1;

// arrow function
$arrowFn = fn ($x) => $x + $y;

// setara dengan:

// anonymous function
$anonFn = function ($x) use ($y) {
  return $x + $y;
};

var_dump($arrowFn(2)); // int(3)
var_dump($anonFn(2)); // int(3)

Berdasarkan contoh diatas, saat kita menggunakan fungsi panah, kita dapat mengakses variabel di lingkup induk tanpa harus menggunakan kata kunci use, fungsi panah akan menangkap secara otomatis nilai variabel di lingkup induk ketika kita memerlukannya sebagai ekspresi.

Semantara di fungsi tanpa nama, kita harus mengguankan kata kunci use agar variabel di lingkup induk dapat digunakan di dalam fungsi.