PHP-də callback funksiyaları

Callback başqa bir funksiyaya parametr kimi ötürülən funksiyaya deyilir.

Gəlin bir nümunəyə baxaq. Tutaq ki, bizim bir funksiyamız var ki, birinci parametr kimi bir rəqəm, ikinci parametr kimi isə bir callback qəbul edir:

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

Gəlin elə edək ki, funksiyanın daxilində bizim callbackimiz ötürülən rəqəm üçün çağırılsın:

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

İndi gəlin görək funksiyamıza callback ötürməyin hansı variantları var.

Variant 1

Bizim callbackimiz adi bir funksiya ola bilər:

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

Bu halda callback kimi biz öz funksiyamızın adını ötürəcəyik:

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

func funksiyasının daxilində bizim callbackimiz adı ilə çağırılacaq.

Variant 2

Bizim callbackimiz dəyişənə yazılmış anonim funksiya ola bilər:

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

Bu halda biz parametr kimi funksiyamız olan dəyişəni ötürürük:

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

Variant 3

Anonim funksiyanı birbaşa parametr kimi ötürmək olar:

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

Variant 4

Ox funksiyasından istifadə edərək kodu qısaltmaq olar:

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

Praktiki tapşırıqlar

Задание 1

Massiv və hər bir massiv elementinə tətbiq olunacaq callback qəbul edən bir funksiya verilib:

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

Rəqəmlərdən ibarət massivi və ötürülən rəqəmin kvadratını qaytaran callback-i parametr kimi ötürərək bu funksiyanı çağırın.