call_user_func
(PHP 4, PHP 5, PHP 7, PHP 8)
Call the callback given by the first parameter
Description
Calls the callback given by the first parameter and passes the remaining parameters as arguments.
Parameters
callbackThe
callableto be called.argsZero or more parameters to be passed to the callback.
NoteNote that the parameters for
call_user_func()are not passed by reference.call_user_func()example and referencesphp<?php error_reporting(E_ALL); function increment(&$var) { $var++; } $a = 0; call_user_func('increment', $a); echo $a."\n"; // it is possible to use this instead call_user_func_array('increment', array(&$a)); echo $a."\n"; // it is also possible to use a variable function $increment = 'increment'; $increment($a); echo $a."\n"; ?>The above example will output:
outputWarning: Parameter 1 to increment() expected to be a reference, value given in … 0 1 2
Return Values
Returns the return value of the callback.
Examples
call_user_func() example
<?php
function barber($type)
{
echo "You wanted a $type haircut, no problem\n";
}
call_user_func('barber', "mushroom");
call_user_func('barber', "shave");
?>The above example will output:
You wanted a mushroom haircut, no problem
You wanted a shave haircut, no problemcall_user_func() using namespace name
<?php
namespace Foobar;
class Foo {
static public function test() {
print "Hello world!\n";
}
}
call_user_func(__NAMESPACE__ .'\Foo::test');
call_user_func(array(__NAMESPACE__ .'\Foo', 'test'));
?>The above example will output:
Hello world!
Hello world!Using a class method with call_user_func()
<?php
class myclass {
static function say_hello()
{
echo "Hello!\n";
}
}
$classname = "myclass";
call_user_func(array($classname, 'say_hello'));
call_user_func($classname .'::say_hello');
$myobject = new myclass();
call_user_func(array($myobject, 'say_hello'));
?>The above example will output:
Hello!
Hello!
Hello!Using lambda function with call_user_func()
<?php
call_user_func(function($arg) { print "[$arg]\n"; }, 'test');
?>The above example will output:
[test]Notes Func-callback-exceptions
See Also
call_user_func_array()is_callable()- Variable functions
ReflectionFunction::invokeReflectionMethod::invoke