I only encountered callbacks recently, and spent many hours surfing the web for a nice simple explanation.
Eventually I think I made sense of it and so here is my attempt to explain what they are and how they work.
What is a Callback?
A Callback (or callback function) is a function that is called when another function has finished.
So imagine 2 functions f1 and f2.
If f1 is our callback then function f2 executes and does what it has to do, then before it finished is calls function f1.
My understanding of the terminology is:
- f1 is our callback function
- f2 is a function that accepts a callback function name as a parameter
Implementing Callbacks
It’s relatively easy to implement this type of functionality.
We could write the code like this:
Although the above shows the basic outline, the implementation is more like this:
Notice that The callback function name is passed ( as a string), as an argument to function f2() along with any other arguments.
The function (f1) is called using the code $callback();
In PHP it is possible to use a variable for a function name:
So
$fname=”f1″;
$fname();
is valid and equivalent to:
f1();
See variable functions php manual for more details.
Here is an example implementation:
Note: in the example above I have omitted error checking. Usually you would check that the function name represents a function before you try to call it. Like this:
if(is_callable($callback)) {
return $callback($otherarguments);
}
WordPress Example
Hooks and filters use callbacks. Here is the add_action function showing what parameters it expects. The second parameter is a function (a callback).
If you look at the WordPress Code associated with many WordPress functions that accept a callback function name then they often pass the callback function name on to another function.
Below is the syntax for the register_setting function and the actual code. You can see that the callback function name is then used by the add filter function.
Summary
PHP allows you to pass a function name as a parameter or argument to a function. A callback is a function that is called by another function, and is passed to that function using the function name.
Resources:
Related tutorials