توابع کال بک (Callback Functions)
«کال بک (Callback)» یعنی تابعی که به تابعی دیگر پاس می دهیم. سپس همان تابع، در زمان مناسب صدا زده می شود. این کار مثل سپردن کارِ شمارش به یک دوست است. فقط نام تابع را می دهی و خودش انجام می دهد.
کال بک با تابعِ نام دار
هر تابع موجود می تواند کال بک باشد. کافی ست نامش را رشته بدهی. مثال زیر طول هر رشته را با array_map() می سازد.
- تابع پردازشگر را بنویس.
- آرایه رشته ها را آماده کن.
- نام تابع را به array_map بده.
<?php
function my_callback($item) {
return strlen($item);
}
$strings = ["apple", "orange", "banana", "coconut"];
$lengths = array_map("my_callback", $strings);
print_r($lengths);
?>
کال بک با تابع بی نام
از نسخه 7، «تابع بی نام (Anonymous Function)» را مستقیم پاس بده. این کار کد را جمع وجور و محلی نگه می دارد.
<?php
$strings = ["apple", "orange", "banana", "coconut"];
$lengths = array_map(function($item) {
return strlen($item);
}, $strings);
print_r($lengths);
?>
کال بک در توابعِ خودمان
توابعِ خودت هم می توانند کال بک بگیرند. فقط متغیرِ تابعی را با پرانتز صدا بزن. مثل صدا زدن یک دکمه کار.
<?php
function exclaim($str) {
return $str . "! ";
}
function ask($str) {
return $str . "? ";
}
function printFormatted($str, $format) {
// Calling the $format callback function
echo $format($str);
}
// Pass "exclaim" and "ask" as callback functions to printFormatted()
printFormatted("Hello world", "exclaim");
printFormatted("Hello world", "ask");
?>
جمع بندی سریع
- کال بک یعنی پاس دادن تابع به تابع.
- نام تابع را رشته بده.
- می توانی تابع بی نام هم بدهی.
- در توابع خودت هم کال بک بگیر.
- برای مبانی فیلترها، به فیلترهای PHP برو.