Fungsi Panggilan Balik dalam PHP

Panggilan balik ialah fungsi, yang disampaikan sebagai parameter kepada fungsi lain.

Mari kita lihat contoh. Katakan kita mempunyai fungsi yang menerima nombor sebagai parameter pertama, dan panggilan balik sebagai parameter kedua:

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

Mari kita buat supaya di dalam fungsi panggilan balik kita dipanggil untuk nombor yang disampaikan:

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

Sekarang mari kita lihat, apakah pilihan untuk menyampaikan panggilan balik ke fungsi kita.

Pilihan 1

Panggilan balik kita boleh menjadi fungsi biasa:

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

Dalam kes ini, sebagai panggilan balik kita akan menyampaikan nama fungsi kita:

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

Di dalam fungsi func panggilan balik kita akan dipanggil mengikut nama.

Pilihan 2

Panggilan balik kita boleh menjadi fungsi tanpa nama, yang direkodkan dalam pembolehubah:

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

Dalam kes ini, kita menyampaikan parameter pembolehubah dengan fungsi kita:

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

Pilihan 3

Boleh menyampaikan fungsi tanpa nama terus sebagai parameter:

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

Pilihan 4

Boleh memendekkan kod, menggunakan fungsi anak panah:

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

Masalah Praktikal

Задание 1

Diberi fungsi, yang menerima array sebagai parameter dan panggilan balik, yang akan digunakan pada setiap elemen array:

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

Panggil fungsi ini, dengan menyampaikan array yang mengandungi nombor dan panggilan balik sebagai parameter, yang mengkuadratkan nombor yang disampaikan.