PHP හි callback ශ්‍රිත

callback යනු වෙනත් ශ්‍රිතයකට පරාමිතියක් ලෙස මාරු කරනු ලබන ශ්‍රිතයකි.

අපි උදාහරණයක් බලමු. අප සතුව පළමු පරාමිතිය ලෙස අංකයක් පිළිගන්නා ශ්‍රිතයක් තිබේ යැයි සිතමු, දෙවන පරාමිතිය ලෙස - callback:

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

ශ්‍රිතය තුළ අපගේ callback මාරු කරන ලද අංකය සඳහා කැඳවනු ලැබේ යැයි සකසමු:

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

දැන් අපි බලමු, අපගේ ශ්‍රිතයට callback යැවීම සඳහා කුමන විකල්ප තිබේද කියා.

විකල්පය 1

අපගේ callback සාමාන්‍ය ශ්‍රිතයක් විය හැකිය:

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

මෙම අවස්ථාවේ දී, callback ලෙස අපි අපගේ ශ්‍රිතයේ නම යවමු:

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

func ශ්‍රිතය තුළ අපගේ callback නමින් කැඳවනු ලැබේ.

විකල්පය 2

අපගේ callback නිර්නාමික ශ්‍රිතයක් විය හැකිය, විචල්‍යයකට ලියා ඇත:

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

අරාවක් පිළිගන්නා ශ්‍රිතයක් ලබා දී ඇත සහ callback, එය අරාවේ එක් එක් මූලද්‍රව්‍යයට යොදනු ලැබේ:

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

මෙම ශ්‍රිතය කැඳවන්න, පරාමිතිය ලෙස අංක සහිත අරාවක් සහ callback, යවන ලද අංකය වර්ග කරන.