Hàm gọi lại PHP
Chức năng gọi lại
Hàm gọi lại (thường được gọi là "gọi lại") là một hàm được truyền dưới dạng đối số cho một hàm khác.
Bất kỳ chức năng hiện có nào cũng có thể được sử dụng làm chức năng gọi lại. Để sử dụng một hàm làm hàm gọi lại, hãy truyền một chuỗi chứa tên của hàm làm đối số của một hàm khác:
Ví dụ
Truyền lệnh gọi lại tới array_map()
của PHP để tính độ dài của mỗi chuỗi trong một mảng:
<?php
function my_callback($item) {
return strlen($item);
}
$strings = ["apple", "orange",
"banana", "coconut"];
$lengths =
array_map("my_callback", $strings);
print_r($lengths);
?>
Hãy tự mình thử »Bắt đầu từ phiên bản 7, PHP có thể chuyển các hàm ẩn danh dưới dạng hàm gọi lại:
Ví dụ
Sử dụng hàm ẩn danh làm hàm gọi lại cho array_map()
của PHP:
<?php
$strings = ["apple", "orange", "banana", "coconut"];
$lengths =
array_map( function($item) { return strlen($item); } , $strings);
print_r($lengths);
?>
Hãy tự mình thử » Lệnh gọi lại trong các hàm do người dùng xác định
Các hàm và phương thức do người dùng định nghĩa cũng có thể lấy các hàm gọi lại làm đối số. Để sử dụng các hàm gọi lại bên trong hàm hoặc phương thức do người dùng xác định, hãy gọi nó bằng cách thêm dấu ngoặc đơn vào biến và truyền đối số như với các hàm thông thường:
Ví dụ
Chạy lệnh gọi lại từ hàm do người dùng xác định:
<?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");
?>
Hãy tự mình thử »