Callback là khái niệm một hàm được truyền vào một hàm khác như một tham số để nó có thể được thực hiện trước hoặc sau một sự kiện hoặc một thay đổi trạng thái. Trong thực tế, callback nghĩa là gọi lại, xem xét một ví dụ sau, một người hỗ trợ sẽ thực hiện lấy các thông tin về lỗi của người dùng sau đó mới gọi lại (callback) cho khách hàng. Trong PHP, thực hiện callback là rất đơn giản. Chúng ta xem một ví dụ sau:
Trên đây là một ví dụ rất đơn giản về callback trong PHP, hàm sayGoodbye được truyền vào hàm sayHello như một tham số. Cách thực hiện này rất hữu ích khi chúng ta muốn định nghĩa một hàm (sayGoodbye) được thực hiện khi một sự kiện xảy ra (sau các câu chuyện khác). Ví dụ trên đây khá dễ hiểu nhưng có một khía cạnh chưa được bàn đến là việc sử dụng kết quả của hàm gọi trong hàm được gọi. Ví dụ tiếp theo cho thấy hỗ trợ viên sau khi lấy thông tin về lỗi người dùng và sử dụng thông tin này để gọi lại cho khách hàng:
Kết quả như sau:
Bản chất của callback(callback(full_name); là gọi đến một hàm được xây dựng sẵn trong PHP call_user_func, như vậy callback(callback(full_name); là tương đương với call_user_func(callback,callback,full_name); Sử dụng callback có thể có lỗi xảy ra nếu chúng ta callback đến một hàm chưa được định nghĩa, vậy chúng ta cần kiểm tra biến được truyền vào có phải là một hàm hay không bằng hàm is_callable():
Callback thường được sử dụng trong những tình huống sau: - Khi ứng dụng cần thực hiện một hàm khác dựa trên ngữ cảnh hoặc trạng thái, hay nói một cách khác là muốn thực hiện một việc gì đó khi một sự kiện xảy ra.
Ví dụ về lập xử lý đa luồng, chúng ta cần mở một file và ghi vào file một cái gì đó, vì file này rất lớn nên việc mở file có thể mất một chút thời gian. Nếu như viết theo cách cũ:
Sử dụng callback, chúng ta có thể thực hiện được những việc khác luôn
Devmaster Academy via allaravel.com