array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'pt_BR', ), 'this' => array ( 0 => 'function.call-user-func.php', 1 => 'call_user_func', ), 'up' => array ( 0 => 'ref.funchand.php', 1 => 'Funções para Manuseamento de Funções', ), 'prev' => array ( 0 => 'function.call-user-func-array.php', 1 => 'call_user_func_array', ), 'next' => array ( 0 => 'function.create-function.php', 1 => 'create_function', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'en', 'path' => 'reference/funchand/functions/call-user-func.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
call_user_func — Call the callback given by the first parameter
Calls the callback
given by the first parameter and passes
the remaining parameters as arguments.
callback
The callable to be called.
args
Zero or more parameters to be passed to the callback.
Nota:
Note that the parameters for call_user_func() are not passed by reference.
Exemplo #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";
// 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";
?>O exemplo acima produzirá:
Warning: Parameter 1 to increment() expected to be a reference, value given in … 0 1 2
Returns the return value of the callback.
Exemplo #2 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");
?>
O exemplo acima produzirá:
You wanted a mushroom haircut, no problem You wanted a shave haircut, no problem
Exemplo #3 call_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'));
?>
O exemplo acima produzirá:
Hello world! Hello world!
Exemplo #4 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'));
?>
O exemplo acima produzirá:
Hello! Hello! Hello!
Exemplo #5 Using lambda function with call_user_func()
<?php
call_user_func(function($arg) { print "[$arg]\n"; }, 'test');
?>
O exemplo acima produzirá:
[test]
Nota:
Callbacks registrados com funções como call_user_func() e call_user_func_array() não serão chamados se houver uma exceção não capturada que foi lançada em um callback anterior.