1. Callback Functions là gì?
Trong PHP, callback function (hàm gọi lại) là một hàm mà bạn có thể truyền làm tham số vào một hàm khác và gọi nó sau khi hàm đó thực thi một số logic. Callback functions thường được sử dụng trong các tình huống xử lý các sự kiện hoặc thực hiện một hành động nào đó khi kết thúc một quy trình khác.
Có thể truyền callback function dưới dạng:
- Một chuỗi (string) chứa tên của hàm.
- Một mảng (array) với tên của class và phương thức tĩnh.
- Một hàm ẩn danh (anonymous function).
2. Cú pháp callback function trong PHP
Cơ bản nhất, bạn có thể truyền một hàm vào một hàm khác như sau:
function my_callback_function() {
echo "Hello from the callback function!";
}
function processCallback($callback) {
// Gọi hàm callback
call_user_func($callback);
}
// Truyền tên của hàm callback vào hàm processCallback
processCallback('my_callback_function');Giải thích:
my_callback_functionlà hàm callback mà chúng ta muốn truyền vào.processCallbacklà hàm sẽ gọi callback function. Bên trong, chúng ta sử dụng hàmcall_user_funcđể gọi hàm callback đã truyền vào.
3. Sử dụng callback function với các hàm tích hợp sẵn của PHP
PHP hỗ trợ sử dụng callback function trong nhiều hàm tích hợp sẵn như array_map(), array_filter(), usort()...
Ví dụ với array_map():
function multiply_by_two($num) {
return $num * 2;
}
$numbers = [1, 2, 3, 4];
$result = array_map('multiply_by_two', $numbers);
print_r($result);Kết quả:
Array
(
[0] => 2
[1] => 4
[2] => 6
[3] => 8
)Trong ví dụ này, multiply_by_two là một callback function được truyền vào hàm array_map(), và hàm này sẽ áp dụng callback lên từng phần tử của mảng $numbers.
4. Sử dụng callback function với phương thức tĩnh
Bạn cũng có thể sử dụng phương thức tĩnh của một class như một callback function:
class MyClass {
public static function staticMethod() {
echo "Hello from static method!";
}
}
function processStaticCallback($callback) {
call_user_func($callback);
}
// Gọi phương thức tĩnh bằng cách truyền array gồm tên class và phương thức
processStaticCallback(['MyClass', 'staticMethod']);5. Callback với hàm ẩn danh (anonymous function)
Hàm ẩn danh là một hàm không có tên, và nó có thể được sử dụng làm callback function. Ví dụ:
function processAnonymousCallback($callback) {
call_user_func($callback);
}
// Truyền hàm ẩn danh
processAnonymousCallback(function() {
echo "Hello from anonymous function!";
});Hàm ẩn danh thường được sử dụng khi bạn muốn định nghĩa hàm trực tiếp mà không cần đặt tên cho nó.
6. Truyền tham số cho callback function
Callback functions có thể nhận các tham số. Bạn chỉ cần truyền tham số vào khi gọi call_user_func() hoặc các hàm tích hợp của PHP:
Ví dụ với tham số:
function greet($name) {
echo "Hello, $name!";
}
function processCallbackWithArgs($callback, $name) {
call_user_func($callback, $name);
}
// Truyền tên hàm và tham số cho callback
processCallbackWithArgs('greet', 'John');Kết quả:
Hello, John!7. Sử dụng callback trong usort()
Hàm usort() dùng để sắp xếp các phần tử trong mảng theo thứ tự mà bạn chỉ định, với sự trợ giúp của một callback function.
Ví dụ:
$numbers = [3, 2, 5, 1, 4];
usort($numbers, function($a, $b) {
return $a <=> $b; // Sắp xếp tăng dần
});
print_r($numbers);Kết quả:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)Ở đây, chúng ta sử dụng hàm ẩn danh làm callback trong usort() để chỉ định cách so sánh các phần tử của mảng.
8. Kết luận
Callback function là một khái niệm mạnh mẽ và linh hoạt trong PHP, cho phép bạn xử lý các logic phức tạp một cách gọn gàng và dễ hiểu hơn. Bạn có thể truyền hàm dưới dạng tham số, dùng phương thức tĩnh, hoặc các hàm ẩn danh. Việc sử dụng callback function rất phổ biến trong các hàm tích hợp sẵn như array_map(), array_filter(), và usort().
Hy vọng qua bài viết này, bạn đã hiểu rõ hơn về cách sử dụng và lợi ích của callback function trong PHP. Hãy thử nghiệm và áp dụng vào các dự án thực tế của mình để hiểu sâu hơn về chúng!








