PHP – توابع بازگشتی (Callback Functions)

توابع Callback چیستند؟

یک تابع callback (که معمولاً به سادگی “callback” نامیده می‌شود) تابعی است که به عنوان یک آرگومان به تابع دیگری پاس داده می‌شود. توابع موجود می‌توانند به عنوان توابع callback استفاده شوند.

برای استفاده از یک تابع به عنوان تابع callback، نام تابع را به صورت یک رشته به عنوان آرگومان تابع دیگری پاس دهید.

مثال 1: استفاده از تابع Callback با array_map()

در این مثال، تابع my_callback برای محاسبه طول هر رشته در یک آرایه به تابع array_map() به عنوان تابع callback پاس داده می‌شود:

<?php
function my_callback($item) {
  return strlen($item);
}
$strings = ["apple", "orange", "banana", "coconut"];
$lengths = array_map("my_callback", $strings);
print_r($lengths);
?>

خروجی:

Array
(
    [0] => 5
    [1] => 6
    [2] => 6
    [3] => 7
)

مثال 2: استفاده از تابع ناشناس (Anonymous Function) به عنوان Callback

از نسخه 7 به بعد، PHP می‌تواند توابع ناشناس (anonymous functions) را به عنوان توابع callback پاس دهد:

<?php
$strings = ["apple", "orange", "banana", "coconut"];
$lengths = array_map(function($item) { return strlen($item); }, $strings);
print_r($lengths);
?>

خروجی مشابه به مثال قبلی است.

توابع Callback در توابع تعریف شده توسط کاربر

توابع و متدهای تعریف شده توسط کاربر نیز می‌توانند توابع callback را به عنوان آرگومان دریافت کنند. برای استفاده از توابع callback در داخل یک تابع یا متد تعریف شده توسط کاربر، تابع callback را با افزودن پرانتز به متغیر فراخوانی کرده و آرگومان‌ها را به طور معمول پاس دهید:

مثال 3: اجرای تابع Callback از یک تابع تعریف شده توسط کاربر

<?php
function exclaim($str) {
  return $str . "! ";
}
function ask($str) {
  return $str . "? ";
}
function printFormatted($str, $format) {
  // فراخوانی تابع callback $format
  echo $format($str);
}
// پاس دادن "exclaim" و "ask" به عنوان توابع callback به printFormatted()
printFormatted("Hello world", "exclaim");
printFormatted("Hello world", "ask");
?>

خروجی:

Hello world! Hello world? 

توضیحات اضافی

  • توابع ناشناس: این توابع به شما این امکان را می‌دهند که تابعی را به صورت فوری و بدون نیاز به تعریف جداگانه آن، به عنوان callback استفاده کنید. این ویژگی در PHP 7 و بالاتر اضافه شده است.

  • توابع تعریف شده توسط کاربر: شما می‌توانید توابع و متدهای خود را برای دریافت توابع callback طراحی کنید تا انعطاف‌پذیری بیشتری به کد خود اضافه کنید.

استفاده از توابع callback می‌تواند به شما کمک کند تا کدهای خود را قابل استفاده مجدد و انعطاف‌پذیرتر کنید.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
Python - محدود کردن داده (MongoDB Limit)

Python – محدود کردن داده (MongoDB Limit)

Python MongoDB محدود کردن نتایج برای محدود کردن نتایج در MongoDB، از متد limit() استفاده می‌کنیم. متد limit() یک...

بیشتر بخوانید
Python - بروزرسانی (MongoDB Update)

Python – بروزرسانی (MongoDB Update)

به‌روزرسانی یک رکورد برای به‌روزرسانی یک رکورد یا سند در MongoDB، از متد update_one() استفاده می‌کنیم. پارامتر اول متد...

بیشتر بخوانید
Python - حذف کالکشن (MongoDB Drop Collection)

Python – حذف کالکشن (MongoDB Drop Collection)

حذف کالکشن شما می‌توانید یک جدول یا کالکشن در MongoDB را با استفاده از متد drop() حذف کنید. مثالحذف...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.