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 میتواند به شما کمک کند تا کدهای خود را قابل استفاده مجدد و انعطافپذیرتر کنید.
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام