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;
  }
?>

इस फ़ंक्शन को कॉल करें, पैरामीटर के रूप में नंबरों वाला एक ऐरे और एक कॉलबैक पास करें, जो पास किए गए नंबर का वर्ग करता हो।