Calls the callback
given by the first parameter and passes the remaining parameters as arguments.
The callable to be called.
Zero or more parameters to be passed to the callback.
Note:
Note that the parameters for call_user_func() are not passed by reference.
Example #1 call_user_func() example and references
<?php error_reporting(E_ALL); function increment(&$var) { $var++; } $a = 0; call_user_func('increment', $a); echo $a."\n"; // You can use this instead call_user_func_array('increment', array(&$a)); echo $a."\n"; ?>The above example will output:
0 1
Returns the return value of the callback, or FALSE
on error.
The interpretation of object oriented keywords like parent and self has changed. Previously, calling them using the double colon syntax would emit an E_STRICT
warning because they were interpreted as static.
Callbacks registered with functions such as call_user_func() and call_user_func_array() will not be called if there is an uncaught exception thrown in a previous callback.
Note that the parameters for call_user_func() are not passed by reference.
<?php error_reporting(E_ALL); function increment(&$var) { $var++; } $a = 0; call_user_func('increment', $a); echo $a."\n"; // You can use this instead call_user_func_array('increment', array(&$a)); echo $a."\n"; ?>
The above example will output:
0 1
<?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 problem
<?php namespace Foobar; class Foo { static public function test() { print "Hello world!\n"; } } call_user_func(__NAMESPACE__ .'\Foo::test'); // As of PHP 5.3.0 call_user_func(array(__NAMESPACE__ .'\Foo', 'test')); // As of PHP 5.3.0 ?>
The above example will output:
Hello world! Hello world!
<?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'); // As of 5.2.3 $myobject = new myclass(); call_user_func(array($myobject, 'say_hello')); ?>
The above example will output:
Hello! Hello! Hello!
<?php call_user_func(function($arg) { print "[$arg]\n"; }, 'test'); /* As of PHP 5.3.0 */ ?>
The above example will output:
[test]
callback -
Please login to continue.