PHPдеги функция-коллбэктер

Коллбэк деп башка функцияга параметр катары берилген функция аталат.

Мисалга карап көрөлү. Бизде биринчи параметри катары санды, экинчи параметри катары коллбэкти кабыл алган функция бар болсун:

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

Функциянын ичинде биздин коллбэк берилген сан үчүн чакырылсын деп кылалы:

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

Эми биздин функцияга коллбэк берүүнүн кандай мүмкүнчүлүктөрү бар экенин көрөлү.

1-вариант

Биздин коллбэк кадимки функция болушу мүмкүн:

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

Бул учурда коллбэк катары биз функциябыздын атын беребиз:

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

func функциясынын ичинде биздин коллбэк ат боюнча чакырылат.

2-вариант

Биздин коллбэк өзгөрмөгө жазылган анонимдик функция болушу мүмкүн:

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

Бул учурда биз параметр катары функциябызды камтыган өзгөрмөнү беребиз:

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

3-вариант

Анонимдик функцияны түз эле параметр катары берүүгө болот:

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

4-вариант

Кодду жеңилдетүү үчүн өркөч функциясын колдонсок болот:

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

Практикалык маселелер

Задание 1

Массивди жана ар бир массив элементине колдонулуучу коллбэкти параметр катары кабыл алган функция берилген:

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

Сандарды камтыган массивди жана берилген санды квадратка көтөрүп берүүчү коллбэкти параметр катары берип, бул функцияны чакырыңыз.