Fungsi Callback di PHP

Callback adalah fungsi, yang diteruskan sebagai parameter ke fungsi lain.

Mari kita lihat sebuah contoh. Misalkan kita memiliki fungsi yang parameter pertamanya menerima angka, dan parameter kedua - sebuah callback:

php<?php
  function func($num, $calb)
  {
    
  }
?>

Mari kita buat agar di dalam fungsi callback kita dipanggil untuk angka yang diteruskan:

php<?php
  function func($num, $calb)
  {
    echo $calb($num);
  }
?>

Sekarang mari kita lihat, apa saja opsi untuk meneruskan callback ke fungsi kita.

Opsi 1

Callback kita bisa berupa fungsi biasa:

php<?php
  function calb($num) {
    return $num ** 2;
  }
?>

Dalam hal ini sebagai callback kita akan meneruskan nama fungsi kita:

php<?php
  func(3, 'calb');
?>

Di dalam fungsi func callback kita akan dipanggil berdasarkan namanya.

Opsi 2

Callback kita bisa berupa fungsi anonim, yang disimpan dalam variabel:

php<?php
  $calb = function($num) {
    return $num ** 2;
  };
?>

Dalam hal ini kita meneruskan variabel yang berisi fungsi kita sebagai parameter:

php<?php
  func(3, $calb);
?>

Opsi 3

Kita bisa meneruskan fungsi anonim langsung sebagai parameter:

php<?php
  func(3, function($num) {
    return $num ** 2;
  });
?>

Opsi 4

Kita bisa mempersingkat kode dengan menggunakan fungsi panah:

php<?php
  func(3, fn($num) => $num ** 2);
?>

Soal Praktis

Задание 1

Diberikan sebuah fungsi, yang parameternya menerima array dan sebuah callback, yang akan diterapkan pada setiap elemen array:

php<?php
  function func($arr, $calb)
  {
    $res = [];
    
    foreach ($arr as $elem) {
      $res[] = $calb($elem);
    }
    
    return $res;
  }
?>

Panggil fungsi ini, dengan meneruskan sebagai parameter array berisi angka-angka dan sebuah callback, yang memangkatkan angka yang diteruskan menjadi kuadrat.