PHP-da Callback funksiyalari

Callback deb parametr sifatida boshqa funktsiyaga uzatiladigan funktsiyaga aytiladi.

Keling, bir misolni ko'rib chiqaylik. Faraz qilaylik, bizda birinchi parametr sifatida raqamni, ikkinchi parametr sifatida esa callbackni qabul qiladigan funktsiya bor:

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

Keling, funktsiya ichida berilgan raqam uchun bizning callbackimiz chaqirilsin:

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

Keling, endi bizning funktsiyamizga callbackni uzatishning qanday variantlari borligini ko'rib chiqaylik.

Variant 1

Bizning callbackimiz oddiy funktsiya bo'lishi mumkin:

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

Bunda callback sifatida biz o'z funktsiyamiz nomini uzatamiz:

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

func funktsiyasi ichida bizning callbackimiz nomi bilan chaqiriladi.

Variant 2

Bizning callbackimiz o'zgaruvchiga yozilgan anonim funktsiya bo'lishi mumkin:

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

Bunda biz parametr sifatida funktsiyani o'z ichiga olgan o'zgaruvchini uzatamiz:

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

Variant 3

Anonim funktsiyani darhol parametr sifatida uzatish mumkin:

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

Variant 4

O'q funktsiyasidan foydalanib, kodni qisqartirish mumkin:

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

Amaliy mashqlar

Задание 1

Massivni va har bir massiv elementiga qo'llaniladigan callbackni parametr sifatida qabul qiluvchi funktsiya berilgan:

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

Raqamlar bilan massiv va berilgan sonni kvadratga ko'taradigan callbackni parametr sifatida uzatib, ushbu funktsiyani chaqiring.