Định nghĩa và Cách sử dụng
Gọi lại là một kiểu giả trong PHP. Với PHP 5.4, gợi ý kiểu Callable đã được giới thiệu, tương tự như Callback. Khi một số đối tượng được xác định là có thể gọi được, điều đó có nghĩa là nó có thể được sử dụng như một hàm có thể được gọi. Một có thể gọi có thể là một hàm tích hợp sẵn hoặc do người dùng xác định hoặc một phương thức bên trong bất kỳ lớp nào.
Hàm is_callable () có thể được sử dụng để xác minh xem mã định danh có thể gọi được hay không. PHP có call_user_ functions () chấp nhận tên của một hàm làm tham số.
Ví dụ sau cho thấy một hàm tích hợp là một hàm có thể gọi được.
Ví dụ
<?php var_dump (is_callable("abs")); ?>
Đầu ra
Điều này sẽ tạo ra kết quả sau -
bool(true)
Trong ví dụ sau, một hàm do người dùng xác định được kiểm tra để có thể gọi được.
Ví dụ
<?php function myfunction(){ echo "Hello World"; } echo is_callable("myfunction") . "\n"; call_user_func("myfunction") ?>
Đầu ra
Điều này sẽ tạo ra kết quả sau -
1 Hello World
Để truyền một phương thức đối tượng dưới dạng có thể gọi, bản thân đối tượng và phương thức của nó được truyền dưới dạng hai phần tử trong một mảng
Ví dụ
<?php class myclass{ function mymethod(){ echo "This is a callable" . "\n"; } } $obj=new myclass(); call_user_func(array($obj, "mymethod")); //array passed in literal form call_user_func([$obj, "mymethod"]); ?>
Đầu ra
Điều này sẽ tạo ra kết quả sau -
This is a callable This is a callable
Phương thức tĩnh trong một lớp cũng có thể được truyền dưới dạng có thể gọi được. Thay vì đối tượng, tên của lớp phải là phần tử đầu tiên trong tham số mảng
Ví dụ
<?php class myclass{ static function mymethod(){ echo "This is a callable" . "\n"; } } $obj=new myclass(); call_user_func(array("myclass", "mymethod")); //using scope resolution operator call_user_func("myclass::mymethod"); ?>
Đầu ra
Điều này sẽ tạo ra kết quả sau -
This is a callable This is a callable