Callback-funktiot PHP:ssä

Callback on funktio, joka välitetään parametrina toiseen funktioon.

Katsotaanpa esimerkkiä. Oletetaan, että meillä on funktio, joka ottaa ensimmäisenä parametrina numeron, ja toisena parametrina - callbackin:

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

Tehdään niin, että funktion sisällä meidän callbackia kutsutaan annetulle numerolle:

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

Katsotaan nyt, mitä vaihtoehtoja callbackin välittämiseksi funktioomme on.

Vaihtoehto 1

Callbackimme voi olla tavallinen funktio:

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

Tässä tapauksessa callbackina välitämme funktiomme nimen:

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

Funktion func sisällä meidän callbackia kutsutaan nimellä.

Vaihtoehto 2

Callbackimme voi olla nimetön funktio, kirjoitettu muuttujaan:

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

Tässä tapauksessa parametrina välitämme muuttujan funktiollamme:

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

Vaihtoehto 3

Nimetön funktio voidaan välittää välittömästi parametrina:

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

Vaihtoehto 4

Koodia voidaan lyhentää käyttämällä nuolifunktiota:

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

Käytännön tehtävät

Задание 1

Annettu funktio, joka ottaa parametrina taulukon ja callbackin, jota sovelletaan jokaiseen taulukon elementtiin:

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

Kutsu tätä funktiota välittämällä parametrina taulukko numeroilla ja callback, joka nostaa annetun numeron neliöön.