Menu
CoddyTech

Hàm callback

Thuộc phần Logic và luồng chương trình trong hành trình PHP của Coddy. Bài học 4 trên 68.

Hàm callback (callback function) là hàm được truyền làm đối số cho một hàm khác. Thay vì gọi hàm ngay lập tức, bạn truyền tên hàm để hàm nhận có thể gọi nó sau này khi cần.

Để truyền một hàm làm callback, bạn chỉ cần dùng tên hàm dưới dạng chuỗi:

<?php
function greet($name) {
    echo "Hello, " . $name . "!";
}

function processUser($username, $callback) {
    // Thực hiện một số thao tác xử lý...
    $callback($username);  // Gọi hàm callback
}

processUser("Alice", "greet");  // Đầu ra: Hello, Alice!
?>

Trong ví dụ này, "greet" được truyền làm callback cho processUser(). Hàm processUser() sau đó gọi callback bằng cách dùng chuỗi làm tên hàm.

Callback rất hữu ích vì chúng giúp hàm linh hoạt hơn. Cùng một hàm có thể thực hiện những hành động khác nhau tùy vào callback bạn truyền vào. Đây là khái niệm nền tảng của nhiều hàm có sẵn trong PHP như array_map() và array_filter(), bạn sẽ gặp chúng ở phần sau của khóa học này.

challenge icon

Thử thách

Dễ

Tạo hai hàm: một hàm tên là formatUppercase, nhận một chuỗi và trả về chuỗi đó ở dạng chữ hoa, và một hàm khác tên là formatLowercase, nhận một chuỗi và trả về chuỗi đó ở dạng chữ thường.

Sau đó, tạo một hàm tên là applyFormat nhận hai tham số: một chuỗi văn bản và tên của một hàm callback. Hàm này sẽ áp dụng hàm callback lên văn bản và trả về kết quả.

Bạn sẽ nhận được hai đầu vào: loại thao tác ("upper" hoặc "lower") và văn bản cần định dạng. Đọc cả hai đầu vào, xác định hàm callback cần dùng dựa trên loại thao tác, gọi applyFormat với hàm callback phù hợp và in ra kết quả đã định dạng.

Định dạng đầu vào: Hai dòng, dòng đầu tiên chứa loại thao tác ("upper" hoặc "lower"), dòng thứ hai chứa văn bản cần định dạng

Đầu ra mong đợi: Văn bản đã định dạng dựa trên loại thao tác

Tự làm thử

<?php
// Đọc đầu vào
$operation = trim(fgets(STDIN));
$text = trim(fgets(STDIN));

// TODO: Viết code bên dưới
// Tạo hàm (function) formatUppercase
// Tạo hàm formatLowercase
// Tạo hàm applyFormat
// Xác định callback cần dùng dựa trên loại thao tác
// Gọi applyFormat với callback phù hợp

// In ra kết quả
echo $result;
?>
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch PHP online