Định nghĩa và cách sử dụng
Callback là một pseudo-type trong PHP. Từ PHP 5.4, type hint Callable được giới thiệu, tương tự như Callback. Khi một đối tượng được xác định là callable, nghĩa là nó có thể được sử dụng như một function có thể gọi. Một callable có thể là function built-in, user-defined function, hoặc method bên trong class.
Hàm is_callable() dùng để kiểm tra xem một identifier có phải callable hay không. PHP có call_user_func() chấp nhận tên function làm tham số.
Ví dụ
Function built-in là callable
<?php
var_dump(is_callable("abs"));
?>
Kết quả
bool(true)
User-defined function là callable
<?php
function myfunction() {
echo "Hello World";
}
echo is_callable("myfunction") . "\n";
call_user_func("myfunction");
?>
Kết quả
1 Hello World
Object method làm callable
Để truyền method của object như callable, truyền object và tên method như hai phần tử trong mảng:
<?php
class MyClass {
function mymethod() {
echo "This is a callable\n";
}
}
$obj = new MyClass();
call_user_func(array($obj, "mymethod")); // mảng literal
call_user_func([$obj, "mymethod"]); // short array syntax
?>
Kết quả
This is a callable This is a callable
Static method làm callable
Static method cũng có thể truyền như callable. Thay vì object, tên class là phần tử đầu tiên trong mảng:
<?php
class MyClass {
static function mymethod() {
echo "This is a callable\n";
}
}
$obj = new MyClass();
call_user_func(array("MyClass", "mymethod"));
// Dùng toán tử phạm vi
call_user_func("MyClass::mymethod");
?>
Kết quả
This is a callable This is a callable