
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
PHP Callbacks and Callables
Definition and Usage
Callback is a pseudo-type in PHP. With PHP 5.4, Callable type hint has been introduced, which is similar to Callback. When some object is identified as callable, it means that it can be used as a function that can be called. A callable can be a built-in or user defined function or a method inside any class.
The is_callable() function can be used to verify if the identifier is a callable or not. PHP has call_user_function() that accepts a function's name as a parameter.
Following example shows a built-in function is a callable.
Example
<?php var_dump (is_callable("abs")); ?>
Output
This will produce following result −
bool(true)
In following example a user defined function is tested for being callable.
Example
<?php function myfunction(){ echo "Hello World"; } echo is_callable("myfunction") . "
"; call_user_func("myfunction") ?>
Output
This will produce following result −
1 Hello World
To pass a object method as a callable, the object itself and its method are passed as two elements in an array
Example
<?php class myclass{ function mymethod(){ echo "This is a callable" . "
"; } } $obj=new myclass(); call_user_func(array($obj, "mymethod")); //array passed in literal form call_user_func([$obj, "mymethod"]); ?>
Output
This will produce following result −
This is a callable This is a callable
Static method in a class can also be passed as callable. Instead of object, name of the class should be first element in array parameter
Example
<?php class myclass{ static function mymethod(){ echo "This is a callable" . "
"; } } $obj=new myclass(); call_user_func(array("myclass", "mymethod")); //using scope resolution operator call_user_func("myclass::mymethod"); ?>
Output
This will produce following result −
This is a callable This is a callable